让我解释一下 我有一个班级X
public class X
{
private List<Y> y;
}
我有另一个班级Y
public class Y
{
int a ;
Private List<Z> z;
}
现在我想手动为Y类对象分配一些值whitch是一个大小为2的对象数组。现在我添加了值。如何将其添加到类X的对象中,其中存在类型为List的类型的属性。 希望能够正确解释。
我有
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]);
失败......
请帮帮我。
答案 0 :(得分:2)
您可以使用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>();
}
答案 1 :(得分:1)
如果您想要访问该类的属性,则需要将其公开
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; }
}
答案 2 :(得分:0)
您应该将列表属性设为公开而非私有。
辅助功能级别(C#参考)http://msdn.microsoft.com/en-us/library/ba0a1yw2.aspx
-
我会创建一个构造函数来创建List&lt;的实例。 Y'GT;
类:
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);