Inconsistance d'accessibilité

olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 - 28 août 2008 à 14:08
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 - 28 août 2008 à 17:20
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

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
28 août 2008 à 14:15
Probablement à cause de l'accessibilité de ReadCPRues...
Internal? Private?
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
28 août 2008 à 14:22
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
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
28 août 2008 à 15:11
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...
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
28 août 2008 à 15:18
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
28 août 2008 à 15:47
Personnellement, je lis private !!??


Members of Default member accessibility
class private
0
olibara Messages postés 666 Date d'inscription dimanche 16 décembre 2007 Statut Membre Dernière intervention 11 mars 2010 6
28 août 2008 à 16:15
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...
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
28 août 2008 à 17:20
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 !
0
Rejoignez-nous