C 3 0亮點 關鍵字var和匿名型別

2021-09-08 20:35:55 字數 984 閱讀 1817

var是初始化乙個匿名型別物件的專用關鍵字, 如果結合var和匿名型別, 在c#3.0中初始化乙個匿名型別的物件是十分有個性的, 這樣的初始化方法讓當時剛接觸c#的我一直摸不清頭腦, 例如下面這個例子:

var myfriend = new  ;
這樣就初始化了乙個匿名物件, 當然關鍵字var的引入, 背後是強大的編譯器做支援, 沒有顯式的型別宣告在程式執行的時候就無法給這個型別的例項分配大小合適的記憶體! 比如這個例子在編譯的時候, 編譯器將建立乙個含有兩個string成員的新匿名型別(第乙個string成員是name, 第二個string成員是***).

這個沒有多少好說的:

var i = 10; //與int i = 10 效果相同

var s = "tom"; //與string s = "tom"效果相同

//...

但這樣寫就是錯的:

var i = 10;

i = "tom";

因為在編譯的時候, 編譯器會進行"型別推演", 編譯器會識別出i是乙個int型變數, 但下一行**圖謀將字串"tom賦值給i, 顯然會編譯出錯. 其實visual studio已經很智慧型了, 不必等到編譯階段, 在ide裡寫這兩行的時候就提示出錯了.

因此學會了var, 很多人可能喜歡宣告任何變數時都使用var關鍵字, 但回頭看看滿篇都是var關鍵字, 過了幾個月回頭看看**不能很直接的看出這個變數時什麼型別, 造成了**的可維護性變差了. 在為了獲得可維護的**, 不要因為使用var關鍵字方便, 就隨意使用這個關鍵字. 盡量在需要的時候再使用, 比如在講乙個匿名型別的物件賦值給乙個變數的時候.

很多時候變數型別的名字較長(如httpwebrequest), 而且httpwebrequest myrequest = (httpwebrequest)webrequest.create(***), 後面已經很明顯的進行強型別轉換了, 在這種情況下我用var宣告變數比較多 :)

C 的var關鍵字

var 是3.5新出的乙個定義變數的型別 其實也就是弱化型別的定義 var可代替任何型別 編譯器會根據上下文來判斷你到底是想用什麼型別的 至於什麼情況下用到var 我想就是你無法確定自己將用的是什麼型別就可以使用var 類似 object但是效率比object高點 使用var定義變數時有以下四個特點...

C 中的var關鍵字

var 是3.5新出的乙個定義變數的型別 其實也就是弱化型別的定義 var可代替任何型別 編譯器會根據上下文來判斷你到底是想用什麼型別的 至於什麼情況下用到var 我想就是你無法確定自己將用的是什麼型別 就可以使用var 類似 object 但是效率比object高點。或者通俗的講 var可以理解為...

C 中的var關鍵字

c 中的var關鍵字 var 是3.5新出的乙個定義變數的型別 其實也就是弱化型別的定義 var可代替任何型別 編譯器會根據上下文來判斷你到底是想用什麼型別的 至於什麼情況下用到var 我想就是你無法確定自己將用的是什麼型別 就可以使用var 類似 object 但是效率比object高點。或者通俗...