2010-04-14 4 views
2

Je ne sais vraiment pas quel est le problème avec VS2010. J'ai créé une classe, et quand je suis en train de créer un modèle de la classe je reçois une erreur: « Erreur xxx est inaccessible en raison de son niveau de protectionUne classe inaccessible. VS2010

Exemple:.

public class Person 
{ 
    Person(string name, int age) 
    { 
     this.name = name; 
     this.age = age; 
    } 
    public string name; 
    public int age; 

} 

class Program 
{ 
    static void Main(string[] args) 
    { 

     Person ps = new Person("Jack", 19); 
    } 
} 

Répondre

6

Essayez d'ajouter au public keywork au constructeur personne:

public Person(string name, int age) 
+0

OMG, merci, j'ai honte. –

+0

Solution simple, spot on. –

+0

ideed c'est une habitude C++ pour éviter "public" –

6

Vous devez faire votre constructeur public:

public Person(string name, int age) 
{ 
    ... 

Vous pouvez demander, pourquoi ne sont pas constructeurs public par défaut? Quel est le point d'une classe que vous ne pouvez pas instancier via son constructeur? Eh bien, cela peut être utile si vous voulez une classe qui ne peut être instanciée que par des méthodes d'usine, par exemple.

public class Person 
{ 
    public static Person makePerson(string name, int age) 
    { 
     ... 

La méthode usine, étant membre de la classe d'accès Person, peut le constructeur non public.

+0

merci pour expliquer. –

Questions connexes