2010-02-24 3 views
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

A[] a = new A[10];A의 인스턴스를 10 개 보유 할 수있는 배열을 만들지 만 참조는 null으로 초기화됩니다. 먼저 해당 인스턴스를 만들어야합니다. a[0] = new A();.

0

기본적으로 배열은 null 값으로 초기화됩니다. 그것들은 유형의 실제 객체가 아니라 현재 사용중인 유형의 컨테이너입니다.

0

이 A의 인스턴스 10 개를 보유하지만 아직 A 인스턴스를 할당하지 않았다고 선언하고 있습니다. new A()을 배열에 넣어야합니다.

0

필요도

A[] a = new A[2] { new A(), new A() }; 
A[] a = new A[] { new A(), new A() }; 
A[] a = { new A(), new A() }; 
를 초기화
관련 문제