C 3 0新特性系列(1) 隱含型別區域性變數

2022-02-01 09:10:46 字數 1183 閱讀 6703

一.隱含型別區域性變數簡介

在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...