[英]How to add array of objects to List in c#
讓我解釋一下我有X班
public class X
{
private List<Y> y;
}
我還有另一堂課
public class Y
{
int a ;
Private List<Z> z;
}
現在,我想手動為Y類對象分配一些值,即對象數組是大小為2的對象。現在,我添加了這些值。 我如何將其添加到X類的對象中,其中存在類型為List Y的屬性。 希望能夠正確解釋。
我有
Y [] y1= new Y[2];
y1[0] = new Y();
y1[0].a=1;
y1[1]=new Y();
y1[0].a=2;
如何將y1 [0]和y1 [1]分配給X的對象。
X x1=new X();
x1.y.add(y1[0]);
x1.y.add(y1[1]);
失敗了...
請幫我 。
你可以使用AddRange
x1.y.AddRange(y1);
x1.y.AddRange(y1.GetRange(0,2)); // Adds first two elements
雖然如果只是幾個元素,則將它們自己添加可能同樣有效
由於您的清單是私人的,您不妨添加一種方法來執行此操作
public void AddRangeToList(List<Y> items)
{
y.AddRange(items);
}
x.AddRangeToList(y1);
x.AddRangeToList(y1.GetRange(0,2));
看來您從未初始化過數組,我會讓構造函數執行此操作
public X()
{
y = new List<Y>();
}
public Y()
{
z = new List<Z>();
}
如果要訪問該類的屬性,則需要將其公開
X x1=new X();
x1.y = new List<Y>(); // need create instant of y before add items
x1.y.Add(y1[0]);
x1.y.Add(y1[1]);
我將如下更改類
public class X
{
public List<Y> y { get; set; }
}
public class Y
{
public int a;
public List<Z> z { get; set; }
}
您應該將列表屬性設為公開而非私有。
可訪問性級別(C#參考) http://msdn.microsoft.com/zh-cn/library/ba0a1yw2.aspx
--
我將創建一個構造器,該構造器創建List <Y>的實例。
類:
public class X
{
public X()
{
Y = new List<Y>();
}
public List<Y> Y { get; private set; }
}
public class Y
{
public Y()
{
Z = new List<Z>();
}
public int A { get; set; }
public List<Z> Z { get; private set; }
}
public class Z
{
public int V { get; set; }
}
用法:
Y[] y1 = new Y[2];
y1[0] = new Y();
y1[0].A = 1;
y1[1] = new Y();
y1[1].A = 2;
X x1 = new X();
x1.Y.Add(y1[0]);
x1.Y.Add(y1[1]);
// or
X x2 = new X();
x2.Y.AddRange(y1);
// or
X x3 = new X();
foreach (Y y in y1)
x3.Y.Add(y);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.