C# | 对象与集合初始化器 object and collection initializer

对象初始化器 

Object initializers let you assign values to any accessible fields or properties of an object at creation time without having to invoke a constructor followed by lines of assignment statements. 

通过对象初始化器,可以在创建对象的同时为对象的属性赋值,而无需显式的调用对象的构造方法或属性设置方法。
适用于所有具有公共可写属性的类。这意味着,只要属性的可访问性为公共(public),并且具有可写(set)的访问器,就可以使用对象初始化器来初始化该类的对象。

示例:

语法格式

TypeName objectName = new TypeName
{
    Property1 = value1,
    Property2 = value2,
    // 可以继续为对象的其他属性赋值
};

 同时使用构造函数和初始化器来初始化一个对象时,初始化器会在构造函数完成后执行,可以为对象的属性提供额外的设置。

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public Person(string name)
    {
        Name = name;
    }
}

// 使用构造函数和初始化器创建 Person 对象
Person person = new Person("Alice")
{
    Age = 30
};

具有匿名类型的对象初始化器

// 使用匿名类型的对象初始化器创建对象并初始化属性
var person = new
{
    Name = "Alice",
    Age = 30
};

 集合初始化器

Collection initializers let you specify one or more element initializers when you initialize a collection type that implements IEnumerable and has Add with the appropriate signature as an instance method or an extension method. The element initializers can be a simple value, an expression, or an object initializer. By using a collection initializer, you do not have to specify multiple calls; the compiler adds the calls automatically.

用于初始化实现了 IEnumerable 接口并具有符合适当签名的 Add 方法(作为实例方法或扩展方法)的集合类型
可以指定一个或多个元素初始化器。元素初始化器可以是一个简单值、一个表达式或一个对象初始化器
通过使用集合初始化器,您无需指定多个调用;编译器会自动添加这些调用。

示例:

初始化列表与字典

//初始化列表
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

//初始化字典
Dictionary<string, int> dictionary = new Dictionary<string, int>
{
    { "one", 1 },
    { "two", 2 },
    { "three", 3 }
};

在集合初始化器中调用对象初始化器

List<Cat> cats = new List<Cat>
{
    new Cat{ Name = "Sylvester", Age=8 },
    new Cat{ Name = "Whiskers", Age=2 },
    new Cat{ Name = "Sasha", Age=14 }
};

如果Add方法允许,元素初始化器可以为null

List<Cat?> moreCats = new List<Cat?>
{
    new Cat{ Name = "Furrytail", Age=5 },
    new Cat{ Name = "Peaches", Age=4 },
    null
};

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值