[C#] 使用 var 關鍵字宣告隱含型別

  • 11158
  • 0
  • 2010-03-09

摘要:[C#]使用 var 關鍵字宣告隱含型別

Introduction

這是 C# 3.0 的產物,到底有多好用,聽說在 「匿名型別」與「LINQ」發光發熱。

有人說它很像 javascript、vb6...。

 

Example

var i = 4 ;
var j = 3;
var k = i + j;

這邊答案會是 7 ,編譯器會依據設定的數值來自動判定變數可能的型態,也因為它是依據初始值來判定型別,

所以宣告隱含型別的同時也必須給定初始值,若是寫成如下會出現錯誤:

var i;
var j;

也因為上述情形,所以宣告為隱含型別的變數,其實是靜態繫結的變數,也就是在編譯時期就已經決定變數型別了。

也可這樣使用:

var numbers = new[] { 1, 2, 3, 4 };

foreach (var x in numbers)
{
 Console.WriteLine(x);
}

注意,宣告為隱含型別的陣列,裡面的元素必須都是同一個型別,比方說都為 int (整數) ,或是都為 string (字串),

不然編譯不會過。

 

其他注意事項

  • 隱含型別只可用在區域變數。

             每一個 var 宣告只能有一個變數,所以你不能這樣寫:

             var n1 = 5, n2 = 7; // 編譯錯誤

            也不可出現在 Method 的參數中,所以你不能這樣寫:

            private void Test(var item){} //編譯錯誤
 

 

何時使用 var ?

有人說,這是為了討好原本 VB 6.0 的客戶(小弟我只看過 VB.NET 但沒寫過)

  • 一般來說是減少程式碼長度?見人見智。
  • 用在 LINQ (這部分我再來研究)。
  • 用在匿名型別時(這部分我慢慢研究)。

 

參考資料

var (C# 參考)

隱含型別區域變數 (C# 程式設計手冊)

隱含型別陣列 (C# 程式設計手冊)

 

補充:

1.發現 Huan-Lin 學習筆記   也有貼這類的文章,我覺得不錯,文後下方的注意事項值得注意。

三小俠  小弟獻醜,歡迎指教