Inconsistance d'accessibilité

Signaler
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
-
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
-
Bonjour

J'ai un message dont je ne parviens pas a comprendre la raison

Dans une classe, je declare une classe Rue, elle est public
    public class Rue
    {
      private int _id;
      private string _nom;


      public int Id
      {
        get { return _id; }
        set { _id = value; }
      }


      public string Nom
      {
        get { return _nom; }
        set { _nom = value; }
      }
    }

Dans une form je declare une List publique de Rues
  public partial class FrmStatArea : Form
  {
    public List<ReadCPRues.Rue> Rues = null;

A la compilation il me signale un inconsistece d'accessibilité : Pourquoi

Inconsistent accessibility:
field type 'System.Collections.Generic.List<Recutex.ReadCPRues.Rue>'
is less accessible than field
'RTPannel.FrmStatArea.Rues' 

7 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Probablement à cause de l'accessibilité de ReadCPRues...
Internal? Private?
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
4
Damned !

Tu a raison : je n'avais pas de préfixe d'accessibilité de la classe ReadCPRues par défaut c'esr private j'imagine

Mais j'avais pas non plus capté que meme si je déclarais Rue public, je dependais encore de l'accessibilité de sa classe parent
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Oui, les classes dont l'accessibilité n'est pas spécifiée sont private...
Mais c'est une bonne pratique de mettre tout le temps le mot clef, même quand c'est private.

Ca évite ce genre d'erreur...
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
4
Merci Bidou

toute petite précision :
En fait l'accessibilité par defaut n'est pas private mais internal

http://msdn.microsoft.com/en-us/library/ba0a1yw2(VS.71).aspx
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Personnellement, je lis private !!??


Members of Default member accessibility
class private
Messages postés
666
Date d'inscription
dimanche 16 décembre 2007
Statut
Membre
Dernière intervention
11 mars 2010
4
Un partout je pense

Mais tu est juste un niveau plus bas .....

Top-level types, which are not nested into other types, can only have internal or public accessibility. The default accessibility for these types is internal.



Nested types, which are members of other types, can have declared accessibilities as indicated in the following table. etc...
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
54
Ha oui tu as raison.
En fait ça n'a pas de sens de déclarer une classe private si elle n'est pas nested, d'ailleurs le compilateur ne le permet pas.

Mais bon, ce genre de problème ne se passe JAMAIS si on a l'habitude de tout le temps indiquer le mot clef (accesssibilité) qui va avec... on est quitte de se casser la tête avec des choses comme ça !