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

C# 3.0新特性深度解析(二):隱式類型變量var與匿名類型

     編輯:關於C語言

var關鍵字:隱式類型局部變量

var非「變體類型」,而是編譯期類型推斷:

var i = 1;        // int
var s = "hello";  // string
var arr = new[] {1,2,3}; // int[]
var obj = new { Name = "Tom", Age = 20 }; // 匿名類型

var使用規則

  • 聲明時必須初始化(編譯器需從初始化表達式推斷類型)。
  • 不可初始化為null(無法推斷具體類型)。
  • 推斷類型為強類型,賦值後不可改變類型。
  • 僅限局部變量,不可用於字段、屬性、方法參數、返回類型。

匿名類型:內聯定義唯讀對象

var p1 = new { Name = "Tom", Age = 20 };
var p2 = new { Name = "Jerry", Age = 18 };
// p1、p2 為同一匿名類型實例(屬性名、順序、類型均相同)

var p3 = new { Age = 20, Name = "Tom" }; // 屬性順序不同 → 不同類型

匿名類型特性

  • 編譯器自動生成密封類,直接繼承object。
  • 僅包含公共只讀屬性,無方法/事件等成員。
  • 方法作用域:無法作為字段/屬性/參數/返回值類型(需配合var)。
  • 結構相等:同類型實例逐屬性比較Equals/GetHashCode。

典型應用場景

  • LINQ投影:select new { c.Name, c.Age }
  • 臨時數據封裝:避免為一次性數據定義正式類。
  • 反射/序列化中間形態:動態構建數據結構。

最佳實踐建議

  • 明顯類型時優先顯式聲明(int i = 1;),提升可讀性。
  • 匿名類型、LINQ查詢、foreach迭代變量必須/建議用var。
  • 記住:var純屬編譯期語法糖,IL中無痕跡,零運行開銷。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved