0

一个非常非常简单的 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;
    }

为什么不让我?

4

3 回答 3

2

当您创建这样的引用类型的数组时,该数组将使用 null 初始化 - 不构造任何实际对象(数组本身除外)。

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

对于您的示例,您将需要执行以下操作:

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

请注意,如果您使用的是类型,例如结构或原始类型(int、double、char 等),则不需要这样做。

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

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

for (int i = 0; i < test.Count; ++i)
    test[i] = new classA();
于 2013-06-02T14:10:48.567 回答
2

你创建了一个 type 的数组ClassA,但是没有初始化元素,所以数组中的元素都是null. 要制作一个带有内容的简单测试数组,请改用数组初始值设定项:

var test = new ClassA[] { new ClassA(), new ClassA() };
于 2013-06-02T14:12:00.950 回答
1

你可以这样做

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

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

于 2013-06-02T14:14:31.267 回答