对象和集合初始值设定项
1 对象初始值设定项
完整示例代码:
using System;namespace ObjectInitExp{ class Program { static void Main(string[] args) {//片段1 Person p = new Person() { Name = "tiana0", Age = 28, Job=new Job(){ JobName="Coder",JobTime = 8} }; Console.WriteLine("p:Name={0},Age={1},Job.JobName={2},Job.JobTime={3}", p.Name, p.Age, p.Job.JobName, p.Job.JobTime);//片段2 Person p1 = new Person{ Name = "tiana0", Age = 28, Job = new Job{ JobName = "Coder", JobTime = 8 } }; Console.WriteLine("p1:Name={0},Age={1},Job.JobName={2},Job.JobTime={3}", p1.Name, p1.Age, p1.Job.JobName, p1.Job.JobTime);//片段3 Person p3 = new Person { Name = "tiana0", Age = 28, Job=null }; Console.WriteLine("p3:Name={0},Age={1},Job.JobName={2},Job.JobTime={3}", p3.Name, p3.Age, null, null); } } class Person { //属性 public string Name { get; set; } public int Age { get; set; } //字段 public Job Job; } public class Job { public string JobName { get; set; } public int JobTime { get; set; } } }
运行程序,结果如下:

知识点小结:
2 集合初始值设定项
示例代码(接前面代码)
List<Person> pList1 = new List<Person>() //注1{ new Person(){Name = "tiana0", Age = 28, Job=new Job(){ JobName="Coder",JobTime = 8}}, new Person(){Name = "tiana0", Age = 28, Job = new Job{ JobName = "Coder", JobTime = 8 }}, new Person(){Name = "tiana0", Age = 28, Job=null},//注2 Null//注3};int i = 0;foreach (Person pTemp in pList1){ if (pTemp != null)//注4 { Console.WriteLine("pTemp{0}:Name={1},Age={2},Job.JobName={3},Job.JobTime={4}", i++, pTemp.Name, pTemp.Age, pTemp.Job != null ? pTemp.Job.JobName : null, pTemp.Job != null ? pTemp.Job.JobTime : 0);//注5 }}
运行代码,得到结果:

代码说明:
3 初始值设定项作用于匿名类型
var tiana=new{ Name="tiana",Age=28};注意:这里的关键字“new”不可少。
关于这点的应用,在Linq中会被经常用到,看示例代码:
var temp = from pt in pList1 select new { newName=pt.Name, newAge=pt.Age };这句代码就不做分析了。
