需要您的幫助,瞭解如何使用Main方法中的一些示例值初始化以下對象以執行某些操作。C#使用列表初始化類<T>屬性
,因爲是新來的C#請指引我,我在哪裏可以得到這些信息
class MobOwner
{
public string Name { get; set; }
public List<string> Mobiles { get; set; }
}
需要您的幫助,瞭解如何使用Main方法中的一些示例值初始化以下對象以執行某些操作。C#使用列表初始化類<T>屬性
,因爲是新來的C#請指引我,我在哪裏可以得到這些信息
class MobOwner
{
public string Name { get; set; }
public List<string> Mobiles { get; set; }
}
這將創建一個包含有一個項目
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");
您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" })
您可以撥打和實例,並設置變量
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;
}
}
var mobOwner = new MobOwner()
{
Name = "name";
Mobiles = new List<string>()
{
"mob1",
"mob2",
"mob3"
};
};
首先,我懷疑你是否真的想要在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);
}
}
感謝大家的支持。我打算使用Dmitriy Kovalenko的回覆,如果我想要一些更多的項目,如name2,mobA,mobB,mobC是否有可能? – rajeshnrh
@rajeshnrh:注意你應該真的熟悉構造函數,因爲它們是爲了這個目的而設計的。它們確保您無法初始化具有無效狀態的「MobOwner」。否則,你的班級的用戶必須知道他必須自己初始化這個列表。他可能會試試這個:var owner = new MobOwner(); owner.Mobiles.Add(「mob」);'這將導致'NullReferenceException'。 –
如果您認爲我的回答是正確的,請將其標記爲正確。 –