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

C# 3.0 隱式型別陣列:var 與 new[] 結合的型別推斷

     編輯:關於C#

隱式型別陣列是 var 型別推斷機制在陣列建立上的自然延伸。透過 new[] 語法,編譯器根據元素初始化清單自動推斷陣列元素型別,簡化陣列宣告。

基本語法


// 一維陣列
var intArray = new[] { 1, 2, 3, 4, 5 };        // int[]
var doubleArray = new[] { 3.14, 1.414 };       // double[]
var stringArray = new[] { "A", "B", "C" };     // string[]

// 交錯陣列
var jaggedInt = new[] 
{ 
    new[] { 1, 2, 3 }, 
    new[] { 4, 5, 6 } 
}; // int[][]

var jaggedString = new[] 
{ 
    new[] { "A", "B" }, 
    new[] { "C", "D", "E" } 
}; // string[][]

// 匿名類型陣列(結合匿名類型特性)
var anonArray = new[] 
{ 
    new { Name = "Van", Age = 22 }, 
    new { Name = "Martin", Age = 23 } 
}; // 匿名類型陣列(元素型別相同,編譯器重用型別)

型別推斷規則

  • 所有元素必須隱式可轉換至單一共同型別
  • 推斷結果為該共同型別(或其基底型別)
  • 若無共同型別(如 new[] { 1, "str" }),編譯錯誤
  • 陣列秩由巢層 new[] 數量決定

常見錯誤與解決

錯誤代碼原因修正
var a = new[] { 1, 2.5 };int 與 double 無隱式雙向轉換var a = new[] { 1.0, 2.5 }; 或 var a = new double[] { 1, 2.5 };
var b = new[] { null, "str" };null 無型別資訊var b = new string[] { null, "str" };
var c = new[] { new { A = 1 }, new { B = 2 } };匿名類型結構不同確保屬性名、型別、順序完全一致

適用場景

  • ✅ 區域變數陣列初始化,型別明顯時減少冗餘
  • ✅ 匿名類型陣列建構(無具名型別可用)
  • ✅ LINQ 查詢中建立臨時陣列
  • ❌ 陣列作為欄位、參數、回傳值時(需顯式型別)
  • ❌ 元素型別不顯著時(顯式宣告更清晰)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved