1、為什麼使用對象初始化器 C#3.0提供了對象初始化器,為了方便在初始化時程式員自己來控制需要初始化的屬性,而不需要在初始化時當屬性不同時修改或新增構造函數 2、如何使用對象初始化器 類定義如下 public class Person { private string name; public s
1、為什麼使用對象初始化器
C#3.0提供了對象初始化器,為了方便在初始化時程式員自己來控制需要初始化的屬性,而不需要在初始化時當屬性不同時修改或新增構造函數
2、如何使用對象初始化器
類定義如下
public class Person { private string name; public string Name { get { return name; } set { name = value; } } private string sex; public string Sex { get { return sex; } set { sex = value; } } private string age; public string Age { get { return age; } set { age = value; } }
客戶端代碼如下:
class Program { static void Main(string[] args) { Person person = new Person { Name = "倩倩", Age = "27", Sex = "女" }; string s = String.Format("姓名:{0}, 年齡:{1}, 性別:{2}", person.Name, person.Age, person.Sex); //string s = person.GetPersonDetail(); Console.WriteLine(s); Console.ReadLine(); } }
執行結果:
3、使用對象初始化器需要註意的細節
要初始化的對象所屬類必須有預設無參數構造函數,如果有構造函數覆蓋了無參數構造函數,必須顯式的定義無參構造函數才能順利編譯及執行
下麵我自己定義了一個構造函數
public Person(string name, string age, string sex) { this.name = name; this.age = age; this.sex = sex; }
客戶端調用
class Program { static void Main(string[] args) { Person person = new Person { Name = "倩倩", Age = "27", Sex = "女" }; string s = String.Format("姓名:{0}, 年齡:{1}, 性別:{2}", person.Name, person.Age, person.Sex); //string s = person.GetPersonDetail(); Console.WriteLine(s); Console.ReadLine(); } }
這樣由於沒有無參構造函數編譯器顯示
只有在Person類里新增無參構造函數才能編譯成功
public Person() { } public Person(string name, string age, string sex) { this.name = name; this.age = age; this.sex = sex; }