簡體   English   中英

如何在C#中向List添加對象數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM