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"); } } }
Почему мой конструктор по умолчанию не вызывается здесь? Что я делаю не так?
A[] a = new A[10]; создаст только массив, который может содержать 10 экземпляров A, но ссылки инициализируются как null. Сначала вам нужно будет создать эти экземпляры, например, a[0] = new A();.
A[] a = new A[10];
A
null
a[0] = new A();
нужно также инициализировать
A[] a = new A[2] { new A(), new A() }; A[] a = new A[] { new A(), new A() }; A[] a = { new A(), new A() };
Вы объявляете массив, который может содержать 10 экземпляров A, но вы еще не выделили ни одного экземпляра A. Вам нужно будет new A() и поместить их в массив.
new A()
Массивы по умолчанию инициализируются нулевыми значениями. Это контейнеры данного типа, а не фактические объекты этого типа.