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

默认情况下,数组使用空值初始化。它们是当前类型的容器,而不是该类型的实际对象。

于 2010-02-24T06:45:40.013 回答
0

您正在声明一个可以容纳 10 个 A 实例的数组,但您还没有分配任何 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 回答