一、VAR 是3.5新出的一個定義變量的類型,其實也就是弱化類型的定義,VAR可代替任何類型,編譯器會根據上下文來判斷你到底是想用什么類型的。
二、至於什么情況下用到VAR 我想就是你無法確定自己將用的是什么類型,就可以使用VAR 類似 OBJECT,但是效率比OBJECT高點。
三、使用var定義變量時有以下四個特點:
1. 必須在定義時初始化。也就是必須是var s = “abcd”形式,而不能是如下形式:
var s;
s = “abcd”;
2. 一但初始化完成,就不能再給變量賦與初始化值類型不同的值了。
3. var要求是局部變量。
4. 使用var定義變量和object不同,它在效率上和使用強類型方式定義變量完全一樣。
四 、var
關鍵字的常見用途是用於構造函數調用表達式。
1.使用 var
則不能在變量聲明和對象實例化中重復類型名稱,如下面的示例所示:
var xs = new List<int>();
2.從 C# 9.0 開始,可以使用由目標確定類型的 new
表達式作為替代方法:
List<int> xs = new(); List<int>? ys = new();
3.下面的示例演示兩個查詢表達式。 在第一個表達式中,var
的使用是允許的,但不是必需的,因為查詢結果的類型可以明確表述為 IEnumerable<string>
。 不過,在第二個表達式中,var
允許結果是一系列匿名類型,且相應類型的名稱只可供編譯器本身訪問。 如果使用 var
,便無法為結果新建類。 請注意,在示例 #2 中,foreach
迭代變量 item
必須也為隱式類型。
// Example #1: var is optional when // the select clause specifies a string string[] words = { "apple", "strawberry", "grape", "peach", "banana" }; var wordQuery = from word in words where word[0] == 'g' select word; // Because each element in the sequence is a string, // not an anonymous type, var is optional here also. foreach (string s in wordQuery) { Console.WriteLine(s); } // Example #2: var is required because // the select clause specifies an anonymous type var custQuery = from cust in customers where cust.City == "Phoenix" select new { cust.Name, cust.Phone }; // var must be used because each item // in the sequence is an anonymous type foreach (var item in custQuery) { Console.WriteLine("Name={0}, Phone={1}", item.Name, item.Phone); }
本文轉載於:https://wenda.so.com/q/1378644256068714