4
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
              A[] a = new A[10];
        }
    }

    public class A
    {
        static int x;

        public A()
        {
            System.Console.WriteLine("default A");
        }

        public A(int x1)
        {
            x = x1;
            System.Console.WriteLine("parametered A");

        }
        public void Fun()
        {
            Console.WriteLine("asd");
        }
    }    
}

デフォルトのコンストラクターがここで呼び出されないのはなぜですか?私は何を間違っていますか?

4

4 に答える 4

4

A[] a = new A[10];の 10 個のインスタンスを保持できる配列のみを作成しますAが、参照は に初期化されnullます。最初にこれらのインスタンスを作成する必要がありますa[0] = new A();

于 2010-02-24T06:45:49.193 に答える
0

デフォルトでは、配列はnull値で初期化されます。それらは手元のタイプのコンテナであり、そのタイプの実際のオブジェクトではありません。

于 2010-02-24T06:45:40.013 に答える
0

A の 10 個のインスタンスを保持できる配列を宣言していますが、まだ A インスタンスを割り当てていません。new A()それらを配列に入れる必要があります。

于 2010-02-24T06:46:35.067 に答える
0

初期化も必要

 A[] a = new A[2] { new A(), new A() };
 A[] a = new A[] { new A(), new A() };
 A[] a = { new A(), new A() };
于 2010-02-24T06:48:44.420 に答える