-4

我有课,说X。我创建了对象数组,以及同一类的类型列表。

例如:

public class Test : IExtensibleDataObject
{
    int a;
    String b;
    [DataMember(Name = "a", IsRequired = false, Order = 1)]
    public int A
    {
        get { return a; }
        set { value = a; }
    }
    [DataMember(Name = "b", IsRequired = false, Order = 2)]
    public String B
    {
        get { return b; }
        set { value = b; }
    }
}

对象数组的创建方式如下

Test[] test1 = new Test[2];
List<Test> test2 = new List<Test>();
test1[0].a = 1;
test1[0].b = "t";
test1[1].a = 2;
test1[1].b = "y";
test2.add(test1);

这一行:

test2.add(test1);

不管用。错误是

“你调用的对象是空的”。

4

3 回答 3

9

test1[0]null
您需要先创建一个实例,然后才能设置其属性。

此外,您只能Add()aTest[]到 a List<Test[]>(数组列表)。

如果要添加数组中的所有对象,请调用AddRange().

于 2013-08-15T14:41:20.703 回答
1

你需要像这样改变你的代码

Test[] test1 = new Test[2];
List<Test> test2 = new List<Test>();
test1[0] = new Test();   //initialized here 
test1[0].A = 1;
test1[0].B = "t";
test1[1] = new Test();  //initialized here 
test1[1].A = 2;
test1[1].B = "y";
test2.AddRange(test1);  // Use Add range method
于 2013-08-15T14:47:11.667 回答
0

首先:需要实例化数组中的Tests。

第二:您只能使用 AddRange() 将数组添加到列表中

Test[] test1 = new Test[2] {
    new Test(),
    new Test()
};
List<Test> test2 = new List<Test>;
test1[0].a = 1;
test1[0].b = "t";
test1[1].a = 2;
test1[1].b = "y";
test2.AddRange(test1);
于 2013-08-15T14:44:34.140 回答