C# 3.0 引入 var 關鍵字,讓編譯器根據初始化運算式自動推斷區域變數的型別。這不是動態型別,而是靜態型別推斷——編譯期即確定型別,執行期零成本。
var i = 5; // int
var s = "Hello"; // string
var d = 1.0; // double
var numbers = new int[] {1,2,3}; // int[]
var orders = new Dictionary<int, Order>(); // Dictionary<int, Order>
等同於顯式宣告:
int i = 5;
string s = "Hello";
double d = 1.0;
int[] numbers = new int[] {1,2,3};
Dictionary<int, Order> orders = new Dictionary<int, Order>();
var x; ❌ 編譯錯誤new 運算式var z = null; ❌var a = 1, b = "str"; ❌for 迴圈初始化區:for (var i = 0; i < n; i++)using 區塊資源取得:using (var fs = File.OpenRead(path))foreach 迭代變數:foreach (var n in numbers) → 推斷為集合元素型別若當前作用域已有名為 var 的型別,var 將解析為該型別並發出警告。但依慣例型別名稱首字母大寫,故極少發生衝突。
var x = 5 不如 int x = 5 清楚)var 是語法糖,不影響效能,善用它能讓程式碼更專注於業務邏輯而非型別儀式。