2010-02-24 6 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"); 
     } 
    }  
} 

Pourquoi mon constructeur par défaut n'est pas appelé ici? Qu'est-ce que je fais mal?Pourquoi mon constructeur par défaut n'est-il pas appelé ici? Pourquoi mon constructeur par défaut n'est-il pas appelé ici?

Répondre

4

A[] a = new A[10]; crée uniquement un tableau pouvant contenir 10 instances de A, mais les références sont initialisées à null. Vous devrez d'abord créer ces instances, par ex. a[0] = new A();.

0

Les tableaux par défaut sont initialisés avec des valeurs nulles. Ce sont des conteneurs du type à portée de main, pas des objets réels du type.

0

Vous déclarez un tableau que peut contenir 10 instances de A, mais vous n'avez pas encore alloué d'instances A. Vous devrez new A() et les mettre dans le tableau.

0

besoin d'initialiser et

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