对象初始化器:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleTest { public class Person { public string username { get; set; } public int age { get; set; } public Person(string un, int ag) { username = un; age = ag; Console.WriteLine("Person construct parameter"); } public Person() { username = "wtq"; age = 13; Console.WriteLine("Person construct"); } public override string ToString() { return string.Format("username:{0} age:{1}", this.username, this.age); } } class Program { static void Main(string[] args) { Person p = new Person() { username = "wtq", age = 26 }; Console.WriteLine(p.ToString()); } } }
编译器会自动为你做setter操作,使得原本几行的属性赋值操作能在一行中完成。这里需要注意:
l 允许只给一部分属性赋值,包括internal访问级别
l 可以结合构造函数一起使用,并且构造函数初始化先于对象初始化器执行