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が、要素を初期化しないため、配列内の要素は allnullです。コンテンツを含む単純なテスト配列を作成するには、代わりに配列初期化子を使用します。

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]、配列に null 項目があります。上記のコードは、新しい ClassA オブジェクトを各配列項目に追加します。Console.Write(test[0].getName());もれなく通話できるようになりました

于 2013-06-02T14:14:31.267 に答える