var x = 0; ✓ | var x; ✗var x = null; ✗(編譯器無法推斷類型)new對象作為初始值:var user = new User();var a = new { Name = "maotin", Age = 99 };
Console.WriteLine(a.Name); // maotin
Console.WriteLine(a.Age); // 99
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var queryLowNums = from num in numbers where num < 5 select num;
foreach (var n in queryLowNums) // 迭代變量也需用var
Console.Write(n + " "); // 輸出 4 1 3 2 0
string[] words = { "aPPLE", "biuEb", "cHeRry" };
var upperLower = from w in words
select new { Upper = w.ToUpper(), Lower = w.ToLower() };
foreach (var item in upperLower)
Console.WriteLine($"Upper: {item.Upper}, Lower: {item.Lower}");
| 場景 | 建議 | 理由 |
|---|---|---|
| 基本類型(int/string等) | 顯式聲明 | 可讀性更高,意圖明確 |
| 匿名類型初始化 | 必須用var | 無具體類型名可寫 |
| LINQ查詢結果 | 建議用var | 類型複雜(IEnumerable<匿名類型>) |
| foreach迭代變量 | 建議用var | 配合查詢變量類型一致 |
| 泛型構造類型 | 視情況 | var list = new List<int>(); 可接受 |
核心原則:var不改變語義,僅簡化編寫;濫用會降低代碼自文檔性,團隊應統一風格規範。