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

C# 3.0 對象與集合初始化器詳解(五):Point/Rectangle 巢狀初始化與集合初始化器實戰

     編輯:關於C語言

對象初始化器巢狀賦值


class Point { public int X { get; set; } public int Y { get; set; } }
class Rectangle 
{ 
    public Point TopLeft { get; set; } 
    public Point BottomRight { get; set; } 
}

var rect = new Rectangle 
{ 
    TopLeft = new Point { X = 100, Y = 100 }, 
    BottomRight = new Point { X = 200, Y = 200 } 
};
// 單語句完成雙層對象構建與賦值

對比傳統寫法


var rect = new Rectangle();
var p1 = new Point { X = 100, Y = 100 };
rect.TopLeft = p1;
var p2 = new Point { X = 200, Y = 200 };
rect.BottomRight = p2;

集合初始化器

適用條件

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

基本示例


int[] arr = { 0,1,2,3,4,5,6,7,8,9 }; // 數組字面量
List list = 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);

組合實戰:Point 列表初始化


class Point 
{ 
    public int X { get; set; } 
    public int Y { get; set; } 
    public override string ToString() => $"[{X}, {Y}]";
}

var points = new List
{
    new Point { X = 10, Y = 20 },
    new Point { X = 100, Y = 200 },
    new Point { X = 1000, Y = 2000 }
};

foreach (var p in points) Console.WriteLine(p);
// 輸出:[10, 20] / [100, 200] / [1000, 2000]

總結

對象初始化器支持巢狀賦值,集合初始化器以數組字面量語法統一集合構建。兩者結合,配合 var、匿名類型,構成 C# 3.0 聲明式數據構建的完整語法體系,代碼可讀性與維護性大幅提升。

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