0

让我解释一下我有一个 X 课

public class X
{
  private List<Y> y;
}

我还有一个 Y 班

public class Y
{
  int a ;
  Private List<Z> z;
}

现在我想手动为 Y 类对象分配一些值,这是一个大小为 2 的对象数组。现在我已经添加了这些值。我如何将它添加到类 X 的对象中,其中存在类 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]);

它的失败...

请帮我 。

4

3 回答 3

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>();
}
于 2013-08-14T06:47:46.353 回答
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; }
}
于 2013-08-14T06:49:49.443 回答
0

您应该将您的列表属性设为公开而不是私有。

可访问性级别(C# 参考)http://msdn.microsoft.com/en-us/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);
于 2013-08-14T06:49:34.257 回答