一.隱含型別區域性變數簡介
在c#3.0中增加了很多新的語言特性,如果有乙個區域性變數被宣告為var,這個宣告被視為隱含型別區域性變數宣告,然後由編譯器根據區域性變數初始化表示式來推斷變數的型別。如下面的宣告:
varinteger = 10;
varname = "terry lee";
varnumbers = new
int ;
var在這裡是僅僅是乙個關鍵字,它並不是c#3.0中的一種新的型別,而是負責告訴編譯器,該變數需要根據初始化表示式來推斷變數的型別,上面的語句相當於:
intinteger = 10;
string
name = "terry lee";
int numbers = new
int ;
二.需要注意的問題
1.在宣告時必須同時賦值,因為宣告依賴於賦值號右邊的表示式,如果有下面的語句:
varinteger;
integer = 10;
編譯時會報implicitly typed locals must be initialized錯誤。 2.
在使用var宣告乙個區域性變數後,它仍然具有強型別,可以做如下測試:
varinteger = 10;
integer = "terry lee";
編譯時會報cannot implicitly convert type 'string' to 'int'錯誤。
3. 初始化器表示式的編譯期型別不可以是空(null)型別,編譯器無法根據null來推斷出區域性變數的型別,如有下面的語句:
varinteger = null;
編譯時會報cannot assign '' to an implicitly typed local錯誤。
4. 初始化語句必須是乙個表示式,初始化表示式不能包含它自身,但是可以是包含乙個物件或集合初始化器的乙個new表示式(即匿名型別)。
如可以這樣去宣告:
varcoll = new
hashtable();
三.適用範圍
var的宣告僅限於區域性變數,也可以包含在foreach、for、using語句中。下面的使用是錯誤的:
class
program }
C 3 0新特性之匿名型別
c 3.0允許將 new和乙個匿名物件初始化器一起來建立乙個匿名型別的物件。具體語法格式為 匿名物件建立表示式 new 匿名物件初始化器 匿名物件初始化器 成員宣告器列表 成員宣告器 成員宣告器列表,成員宣告器 成員宣告器 簡單名稱 成員訪問 識別符號 表示式 賦值表示式 注 簡單名稱就是已經定義在...
c 3 0新特性 隱式型別
在c 中,可以用var關鍵字來宣告隱式型別的區域性變數,語法如下 var 變數名 初始值 注意 1.使用var關鍵字定義的變數必須初始化 2.使用var關鍵字只能宣告區域性變數 包括在for foreach using語句中使用的變數 而不能宣告其他變數。3.使用object型別宣告的變數是弱型別,...
一 初學C 3 0之隱含型別區域性變數
一 初學c 3.0之隱含型別區域性變數 隱含型別區域性變數 implicitly typed local variable 利用var關鍵字宣告區域性變數,變數宣告時必須初始化,變數的型別從初始化的值推斷出來。using system namespace teson 相當於int d new int...