C# 3.0 引入 var 關鍵字支援隱含型別區域變數,搭配 LINQ 與匿名類型成為現代 C# 開發基石。本文系統說明語法規則、型別推斷機制、適用範圍與最佳實務。
var i = 5; // int
var h = 23.56; // double
var s = "C Sharp"; // string
var intArr = new[] { 1, 2, 3, 4 }; // int[]
var a = new[] { 1, 10, 100, 1000 }; // int[]
var str = new[] { "hello", null, "qun" }; // string[]
var jagged = new[] { new[] {1,2,3}, new[] {5,6,7} }; // int[][]
var anon = new { name = "yaoyao", age = 24 }; // 匿名類型
var vlist = new List<int>(); // List<int>
只能用於方法內、for、foreach、using 區塊區域變數宣告:
for (var i = 0; i < 10; i++) { }
foreach (var item in items) { }
using (var reader = new StreamReader(path)) { }
編譯器依初始化運算式推斷型別,var x; 或 var y = null; 均編譯錯誤。
編譯期確定型別,IntelliSense 完整支援:
var i = 0; int value = i; // 合法,i 為 int
因型別名稱僅編譯器知悉:
var a = new { Name = "maotin", Age = 99 };
Console.WriteLine(a.Name);
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var query = from num in numbers where num < 5 select num;
foreach (var n in query) Console.Write(n + " ");
var i = 9)降低可讀性,建議顯式宣告foreach 迭代變數搭配 var 提升可讀性