Почему мой конструктор по умолчанию для массива не вызывается здесь? - PullRequest
4 голосов
/ 24 февраля 2010
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 голосов
/ 24 февраля 2010

A[] a = new A[10]; создаст только массив, который может содержать 10 экземпляров A, но ссылки инициализируются как null. Сначала вам нужно будет создать эти экземпляры, например, a[0] = new A();.

0 голосов
/ 24 февраля 2010

нужно также инициализировать

 A[] a = new A[2] { new A(), new A() };
 A[] a = new A[] { new A(), new A() };
 A[] a = { new A(), new A() };
0 голосов
/ 24 февраля 2010

Вы объявляете массив, который может содержать 10 экземпляров A, но вы еще не выделили ни одного экземпляра A. Вам нужно будет new A() и поместить их в массив.

0 голосов
/ 24 февраля 2010

Массивы по умолчанию инициализируются нулевыми значениями. Это контейнеры данного типа, а не фактические объекты этого типа.

...