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");
}
}
}
为什么我的默认构造函数没有被调用?我做错了什么?
答案 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() };