C# 3.0特性-- 对象初始化器

C# 3.0特性-- 对象初始化器

有一个简单的定义类,

       

class Book
{
        public string SN { get; set; }
        public string Name { get; set; }
        public double Price { get; set; }
}


有三个属性,并且用自动属性语法来定义。如果需要实例化并初始化这个类的一个对象实例,就必须执行以下的语句:

Book book1 = new Book();
book1.SN = "6900000000";
book1.Name = "学C#";
book1.Price = 69.50;


如果在类定义中添加带参数构造函数如下:

        public Book(string _sn, string _name, double _price)
        {
            this.SN = _sn;
            this.Name = _name;
            this.Price = _price;
        }

那么把实例化和初始化合并起来,代码如下:

         Book book1 = new Book("6900000000", "学C#", 69.50);


由于添加了无参数的构造函数,且定义Book类里面并没有提供无参数构造函数的方法,所以
	Book book1 = new Book();	// 没有无参数的构造函数,会报错

提示错误



此时向类定义中添加无参构造函数。


进入对象初始化器,这是无需在类中添加额外的代码(如构造函数)就可以实例化和初始化代码的方法。实例化对象时,要为每个初始化的、可公开访问的属性或字段使用名称-值对,来提供其值。其语法如下:

Book book1 = new Book {
   SN = "6900000000",
   Name = "学C#",
   Price = 69.50
};


使用对象初始化器,不能明确调用类的构造函数,而是自动调用默认的无参构造函数。这是对象初始化器在设置参数之前调用的,以便在需要时为默认构造函数中的参数提供默认值。如果提供了带参数的构造函数,那么在类中添加无参数的构造函数。


在Book类中添加一个属性(Type)Type,还另外定义一个 Type类,其属性包括 (int)Id、(string) Name,这里使用对象初始化器的嵌套使用,代码如下

Book book1 = new Book
{
                SN = "6900000000",
                Name = "学C#",
                Price = 69.50,
                Type = new Type { Id = "001", Name="计算机书籍"}
};



注意: 对象初始化器没有替代非默认构造函数。在初始化对象时,可以使用对象初始化器来设置属性和字段值,但这并不意味着总是知道需要初始化什么状态。通过构造函数可以为函数指定对象需要什么值,在执行代码,以立即响应这些值。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值