有需求或技術問題可以隨時跟我連絡 (MSN上線時)

2009年8月18日 星期二

C# 3.0 物件初始化的新方式 (Object Initializer)

看範例

定義Person類別

public class Person
{
    public string Name;
    public int Age;
    public int Height;
    public int Weight;
    public string Country;
    public string PhoneNo;

    //預設建構式 
    public Person() { }

    //建構式(1)
    public Person(string name)
    {
        this.Name = name;  
    }

    //建構式(2)
    public Person(string name, int age)
    {
        this.Name = name;
        this.Age= age; 
    }
}

C#2.0 初始化物件方式

//使用預設建構式初始化
Person Tony= new Person();
Tony.Name= "Tony";
Tony.Country = "Chinese";

//使用建構式(1)
Person Tony = new Person("Tony"); 

//使用建構式(2)
Person Tony = new Person("Tony ", 23);

C#3.0 初始化物件一個新方式(舊的也是沿用)

Person Mary = new Person

    Name= "Tony";
    Age= "23";
    Height=177;
    Weight=78;
    Country = "Chinese";
    PhoneNo= "07-3333333";
};

優點:

(1)程式的精簡
(2)提供類似建構式指定參數方式初始化物件
(3)可以任意呼叫所有公開的欄位或屬性,不需要刻意建立多個建構式

至於方不方便,見仁見智吧...

另外泛型也新增了類似的方式

C# 2.0之泛型語法建立之LIST
    List<string> models = new List<string>();
    models.Add("Kevin");
    models.Add("Mary");
    models.Add("Clare");
    models.Add("Joe");
    models.Add("Mark");

C# 3.0之集合初始化(Collection Initializer)建立之List集合
    List<string> Models= new List<string> { "Kevin", "Mary", "Clare", "Joe", "Mark" };




沒有留言:

張貼留言