2016-07-07 114 views
-1

需要您的幫助,瞭解如何使用Main方法中的一些示例值初始化以下對象以執行某些操作。C#使用列表初始化類<T>屬性

,因爲是新來的C#請指引我,我在哪裏可以得到這些信息

class MobOwner 
{ 
    public string Name { get; set; } 
    public List<string> Mobiles { get; set; } 
} 

回答

0

這將創建一個包含有一個項目

MobOwner item = new MobOwner() 
{ 
    Name = "foo", 
    Mobiles = new List<string>() { "bar" } 
}; 

另一種方式是列表中選擇一個MobOwner對象添加構造函數以簡化實例

class MobOwner 
{ 
    public string Name { get; set; } 
    public List<string> Mobiles { get; set; } 

    public MobOwner(string Name, params string[] Mobiles) 
    { 
     this.Name = Name; 
     this.Mobiles = new List<string>(Mobiles); 
    } 
} 

用法:

MobOwner item2 = new MobOwner("foo", "bar", "bar"); 
1

您constrcutor內簡單地將其初始化:

class MobOwner 
{ 
    public string Name { get; set; } 
    public List<string> Mobiles { get; set; } 
    public MobOwner() { 
     this.Mobiles = new List<string>(); 
    } 
} 

您還可以定義一個構造函數,照片直接把正確的價值觀到您的列表:

class MobOwner 
{ 
    public string Name { get; set; } 
    public List<string> Mobiles { get; set; } 
    public MobOwner(IEnumerable<string> values) { 
     this.Mobiles = values.ToList(); 
    } 
} 

哪你可以比打電話像new MobOwner(new[] { "Mario", "Hans", "Bernd" })

1

您可以撥打和實例,並設置變量

var owner = new MobOwner(); 
owner.Mobiles = new List<string>{"first", "second"}; 

或像這樣

var owner = new MobOwner {Mobiles = new List<string> {"first", "second"}}; 

建議報告的方法是使用一個構造器,使私人

class MobOwner 
{ 
    public string Name { get; private set; } 
    public List<string> Mobiles { get; private set; } 
    // constructor 
    public MobOwner(string name, List<string> mobiles) 
    { 
     Name = name; 
     Mobiles = mobiles; 
    } 
} 
0
var mobOwner = new MobOwner() 
    { 
     Name = "name"; 
     Mobiles = new List<string>() 
      { 
       "mob1", 
       "mob2", 
       "mob3" 
      }; 
    }; 
+0

感謝大家的支持。我打算使用Dmitriy Kovalenko的回覆,如果我想要一些更多的項目,如name2,mobA,mobB,mobC是否有可能? – rajeshnrh

+0

@rajeshnrh:注意你應該真的熟悉構造函數,因爲它們是爲了這個目的而設計的。它們確保您無法初始化具有無效狀態的「MobOwner」。否則,你的班級的用戶必須知道他必須自己初始化這個列表。他可能會試試這個:var owner = new MobOwner(); owner.Mobiles.Add(「mob」);'這將導致'NullReferenceException'。 –

+0

如果您認爲我的回答是正確的,請將其標記爲正確。 –

1
屬性集

首先,我懷疑你是否真的想要在Mobiles屬性: 通常我們添加/更新/刪除列表中的項目,但不指定該列表作爲整個

MobOwner sample = new MobOwner(...); 

    sample.MobOwner.Add("123"); 
    sample.MobOwner.Add("456"); 
    sample.MobOwner.RemoveAt(1); 
    sample.MobOwner[0] = "789"; 

    sample.MobOwner = null; // we, usually, don't want such code 

實現可

class MobOwner { 
    public string Name { get; set; } 
    public List<string> Mobiles { get; } = new List<string>(); 

    public MobOwner(string name, IEnumerable<string> mobiles): base() { 
    if (null == name) 
     throw new ArgumentNullException("name"); 

    if (null == mobiles) 
     throw new ArgumentNullException("mobiles"); 

    Name = name; 

    Mobiles.AddRange(mobiles); 
    } 
}