对象和集合初始化器

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");

原文地址:https://www.cnblogs.com/fjsnail/p/3253043.html