C# 3.0 feature 1--Implicitly typed local variables

iDotNetSpace發表於2009-08-12

我們來看下列變數宣告

C# 3.0 feature 1--Implicitly typed local variablesvar i=5;
   var numbers
=new int[]{1,2,3};

首先,C# compiler 會在同一個namespace範圍內尋找使用者自定義的var型別,如果找到,則把i, numbers做作var型別處理。如果沒找到,則認為i, numbers為implicitly typed local variables,並根據其初始值確實其型別,上述程式碼的IL程式碼和下列程式碼的IL相同

C# 3.0 feature 1--Implicitly typed local variablesint i=5;
   int[] numbers=new int[]{1,2,3};

使用Implicitly typed local variables時應遵守下列約束:
   1. The declarator must include an initializer
   2. The initializer must be an expression
   3. The initializer expression must have a complie-time type which cannot be the null type.
   4. The local variable declaration cannot include multiple declarations.
   5. The initializer cannot refer to itself.
  
粗一看,額的神啊,一共有五條約束,還挺麻煩的,其實歸納下來主要就一句話,必須要讓編繹器能從initializer準確推斷出變數的型別,編繹器也是人啊,它需要根據推斷出來的型別為變數分配記憶體空間。
比如: var x = {1,2,3} //error, cannot infer the type from {1,2,3"}
              var x = new int[]{1,2,"3}; // right. x is an array of type integer

最後說一下Implicitly typed local variable的使用範圍,它可不是到處能用。僅僅可以用於下面四種情況
   1. 區域性變數宣告
   2. for 語句中變數宣告)
   3. using 語句初始化變數時. 
   4. foreach 中iterator型別宣告)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-612013/,如需轉載,請註明出處,否則將追究法律責任。

相關文章