如何在c#中向List添加对象数组

时间:2013-08-14 06:44:50

标签: c# asp.net

让我解释一下 我有一个班级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]);

失败......

请帮帮我。

3 个答案:

答案 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);