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

C# 3.0 語言增強詳解(二):隱式類型數組、對象集合初始化器深度解析

     編輯:關於C語言

隱式類型區域變量驗證

編譯器正確推斷各變量類型並嵌入元數據:


var i = 5; var s = "hi"; var d = 1.5;
// IL: int32, string, float64

隱式類型化數組

合法聲明


var ia = new[] { 1, 2, 3, 4, 5 };     // int[]
var da = new[] { 1.1, 2, 3, 4, 5 };   // double[](int 隱式轉 double)
var sa = new[] { "Hello", "World" };  // string[]

類型兼容性規則

所有元素必須隱式可轉換為單一「最佳類型」:


// 合法:int → double 隱式轉換
var mixed = new[] { 1, 2.5, 3 }; // double[]

// 非法:無共同最佳類型
var bad = new[] { 1, "hello", 2.0 }; // ❌ 編譯錯誤

對象初始化器

語法靈活性


var book = new Book 
{ 
    Name = "First", 
    Isbn = "111", 
    Price = 88f 
};
// 屬性順序任意、可部分賦值、可留空

編譯器展開


var book = new Book();
book.Name = "First";
book.Isbn = "111";
book.Price = 88f;

集合初始化器

適用條件

  • 實現 ICollection<T>
  • 明確泛型參數 T
  • 元素隱式轉換至 T

示例


List nums = new List { 0,1,2,3,4,5,6,7,8,9 };
// ArrayList 不實現 ICollection → 不可用

編譯器生成


var list = new List();
list.Add(0); list.Add(1); ... list.Add(9);

真正目的:為匿名類型鋪路

隱式類型聲明的核心價值不在簡化基本類型聲明,而在於為匿名類型提供唯一可行的聲明語法。匿名類型無名稱,只能通過 var 接收編譯器生成的內部類型實例。

總結

隱式類型數組延續 var 推斷邏輯,對象/集合初始化器將構造與賦值合一,兩者雙雙服務於匿名類型的聲明與初始化。這套組合拳將 C# 從命令式「逐步構建」推向聲明式「描述結果」,為函數式風格的 LINQ 奠定語法基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved