C#新语言特性有很多值得学习的地方,这里我们主要介绍C#对象初始化器,包括介绍基于泛型的类型为User的List集合等方面。
C#对象初始化器 (Object Initializers) :
.NET2.0框架中的类型非常依赖于属性。当生成对象实例和使用新的类型时,在.Net2.0时候我们像这样写:
- User user = new User();
- user.Id = 1;
- user.Name = "YJingLee";
- user.Age = 22;
在VS2008中,编译器会自动地生成合适的属性setter代码,使得原来几行的属性赋值操作可以在一行完成。我们可以这样简化:像这样,对象初始化器由一系列成员对象组成,其对象必须初始化,用逗号间隔,使用{}封闭。
- User user = new User { Id = 1, Name = "YJingLee", Age = 22 };
又例如,我把二个人加到一个基于泛型的类型为User的List集合中:
- List<User> user = new List<User>{
- new User{Id=1,Name="YJingLee",Age=22},
- new User{Id=2,Name="XieQing",Age=25},
- };
如果有相同名字和类型的两个对象初始化器将会产生相同的实例,可以相互赋值。例如:
- User user = new User { Id = 1, Name = "YJingLee", Age = 22 };
- User user2 = new User { Id = 2, Name = "XieQing", Age = 25 };
- user = user2;
除了在初始化类时设置简单的属性值外,C#对象初始化器特性也允许我们设置更复杂的嵌套(nested)属性类型。例如我们可以在上面定义的User类型同时拥有一个属于Address类型的叫“Address”的属性:
- User user = new User
- {
- Id = 1,
- Name = "YJingLee",
- Age = 22,
- Address = new Address
- {
- City = "NanJing",
- Zip = 21000
- }
- };
【编辑推荐】