C# 3.0 引入 var 關鍵字,讓編譯器根據初始化運算式自動推斷變數型別,減少冗長的型別宣告:
int x = 7;
string s = "This is a string.";
double d = 99.99;
int[] numbers = new int[] { 0, 1, 2, 3, 4, 5, 6 };
var x = 7; // 推斷為 int
var s = "This is a string."; // 推斷為 string
var d = 99.99; // 推斷為 double
var numbers = new int[] { 0, 1, 2, 3, 4, 5, 6 };
var x; 編譯錯誤,因為無法推斷型別var 只是編譯期語法糖,編譯後的 IL 中會還原為具體型別,執行效能零損耗var list = new List<int>(); 而非 var list = new List();var x = null; 無法推斷型別var 在以下情況最具優勢:
var dict = new Dictionary<string, List<KeyValuePair<int, string>>>();var result = from p in products select new { p.Name, p.Price };var func = new Func<int, int, int>((a, b) => a + b);建議:當型別從右側明顯可見時使用 var;當型別不易判斷(如方法回傳值)時,保留顯式型別宣告以提升可讀性。