example1:
Employ e=new Employ(){name="tome",age=23}
等价于
Employ e=new Employe();
e.name="tome";
e.age=23;
example2:
string s=new Employee(){name="tome",age=9}.tostring().toupper();
example3:
class ClassRoom { private List<string> m_student = new List<string>(); public List<string> Students { get { return m_student; } } //自动属性 }
static void Main(string[] args) { ClassRoom room = new ClassRoom { Students = { "23", "234" } }; foreach(var r in room.Students) { Console.WriteLine(r);
}
Console.ReadKey(); }
这个例子中:
ClassRoom room = new ClassRoom { Students = { "23", "234" } };这样写是什么意思??
我们注意到,在一个实现IEnumberable 接口的对象是一个集合,集合的初始化都是相加操作,而不是覆盖
虽然这里面Students只是一个自动属性,但这里看着一个集合
这里就相当于:
ClassRoom room=new ClassRoom();
room.Studets.add(23);
所以这一步 ClassRoom room = new ClassRoom { Students = { "23", "234" } };就是实现一个集合,再操作集合
再注意:初始化是,更属性中的get无关。因为本来应该是这样的
public List<string> Students { get { return m_student; } }
等价于: public List<string> Students;
public Get Students{ return m_students}
初始化只是简单的给Students赋值而已!
我们可以看出,对于实现IEnumberable接口的属性,初始化是同过相加形成一个集合
有的集合要获取多个实参:例如Dictionary
Dictionary<string,string> table=new Dictionary<String,String>{
{"tom“,”1“} ,{"tom“,”1“} ,{”jake“,”1“}
}
相当于:
Dictionary<string,string> table=new Dictionary<string,string>();
table.add("tom","1");
table.add("jake","1");