首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> C# >> 關於C#

C# 3.0 隱式型別區域變數:var 關鍵字完整指南

     編輯:關於C#

C# 3.0 引入 var 關鍵字,讓編譯器從初始化運算式推斷區域變數型別,減少冗長型別宣告,配合匿名型別與 LINQ 使用極為強大。

基本語法與等價寫法

var i = 5;                    // int i = 5;
var s = "Hello";              // string s = "Hello";
var d = 1.0;                  // double d = 1.0;
var arr = new int[] {1,2,3};  // int[] arr = new int[] {1,2,3};
var dict = new Dictionary<int, Order>(); // 完整泛型宣告

限制規則

進階應用場景

foreach 迴圈變數

var numbers = new[] {1, 3, 5, 7, 9};
foreach (var n in numbers) Console.WriteLine(n); // n 推斷為 int

using 區塊資源取得

using (var fs = new FileStream("data.bin", FileMode.Open)) { ... }

for 迴圈初始化

for (var i = 0; i < 10; i++) { ... }

匿名型別 (唯一命名方式)

var person = new { Name = "Tom", Age = 25, Skills = new[] {"C#", "SQL"} };
// person 型別為編譯器生成的匿名型別,只能用 var 宣告

LINQ 查詢結果

var query = from p in products
            where p.Price > 100
            select new { p.Name, p.Price };
// query 型別為 IEnumerable<匿名型別>

最佳實務建議

  1. 型別明顯時使用 var:右側有 new Type() 或字面常數
  2. 型別不明顯時顯式宣告:var result = GetData(); 建議改為 DataTable result = GetData();
  3. 基本型別建議顯式宣告:int count = 0; 比 var count = 0; 更清晰
  4. 團隊統一風格:制定編碼規範避免爭論

編譯器實作細節

  • 編譯期完成型別推斷,IL 中無 var 痕跡
  • 推斷結果為靜態型別,非動態型別 (dynamic)
  • 不影響執行效能,純語法糖
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
規則說明錯誤範例
必須初始化宣告時即賦值var x;
初始化運算式不可為 null編譯期需推斷具體型別var x = null;
不可為集合初始化器本身需用 new 運算式var x = {1,2,3};
多變數宣告型別需一致單一 var 宣告多變數時var a = 1, b = "s";
僅限區域變數不可用於欄位、屬性、參數class C { var x = 1; }