制作一个简单的对象数组

时间:2013-06-02 14:08:45

标签: c# arrays

一个非常非常简单的C#问题。

我想创建另一个类的普通小数组。

代码:

class Program
{
    static void Main(string[] args)
    {
        classA[] test;
        test = new classA[2];
        Console.Write(test[0].getName());


class classA
{
    string name;
    public classA()
    {
        this.name = "zup";
    }
    public string getName()
    {
        return this.name;
    }

为什么不让它让我?

3 个答案:

答案 0 :(得分:2)

当你创建一个像这样的引用类型的数组时,数组是用空值初始化的 - 没有构造实际的对象(除了数组本身)。

因此,您需要显式创建数组的每个元素。

对于您的示例,您需要执行此操作:

classA[] test;
test = new classA[2];
test[0] = new classA();
test[1] = new classA();

请注意,如果您使用的是 value 类型,例如struct或基本类型(int,double,char等),则不需要这样做。

您经常编写一个循环来初始化一个数组,所以再次为您的代码示例:

classA[] test;
test = new classA[2];

for (int i = 0; i < test.Count; ++i)
    test[i] = new classA();

答案 1 :(得分:2)

您创建了一个ClassA类型的数组,但不要对元素进行初始化,因此数组中的元素都是null。要创建一个包含内容的简单测试数组,请改为使用数组初始值设定项:

var test = new ClassA[] { new ClassA(), new ClassA() };

答案 2 :(得分:1)

您可以按照以下方式进行操作

test = new classA[2].Select(c=>new classA()).ToArray();

调用new classA[2]后,数组中有空项。上面的代码将为每个数组项添加新的ClassA对象。现在您可以毫无例外地致电Console.Write(test[0].getName());