为什么我的默认构造函数没有被调用?

时间:2010-02-24 06:40:58

标签: c# default-constructor

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 个答案:

答案 0 :(得分:4)

A[] a = new A[10];只会创建一个可容纳10个A实例的数组,但引用会初始化为null。您必须首先创建这些实例,例如a[0] = new A();

答案 1 :(得分:0)

默认情况下,数组使用空值初始化。它们是手头类型的容器,而不是该类型的实际物体。

答案 2 :(得分:0)

您正在声明一个可以包含10个A实例的数组,但您还没有分配任何A实例。您必须new A()并将它们放入数组中。

答案 3 :(得分:0)

还需要初始化

 A[] a = new A[2] { new A(), new A() };
 A[] a = new A[] { new A(), new A() };
 A[] a = { new A(), new A() };