2010-12-14 51 views
0
namespace hi 
{ 
    class hithere 
    { 
     public int numberOne = 12; 
     public int numberTwo = 12; 

     static void yo() 
     { 
      public int numberThree = 12; 
      private int numberFour = 12; 
     } 
    } 
} 

Quelqu'un peut-il me dire la différence entre les variables numberOne, numberTwo, numberThree et numberFour dans cet extrait de code?Variables privées vs publiques

+0

Cela ne semble pas être un code C# valide. IIRC vous ne pouvez pas mettre un mot clé public/privé avant les variables locales. Êtes-vous sûr que votre exemple est correct? –

+1

Cela ne compilerait pas par tout effort. 'function yo' est complètement invalide et n'a aucun sens. –

+2

qu'est-ce que 'function yo' est censé être? Le nom suggère une fonction, mais l'absence de params et l'utilisation de 'public' et' private' suggèrent une classe interne. L'extrait de code ne compilera pas, ce n'est pas vraiment clair ce que vous vouliez. – Juliet

Répondre

1

numberOne et numberTwo sont des variables d'instance publique dans heap. Ils peuvent être accédés directement à l'intérieur d'un objet qui a une instance de l'objet hithere. numberThree et numberFour ne sont pas accessibles de cette façon car ils ne sont pas des variables d'instance et sont encapsulés dans la portée de la fonction yo et stockés dans leur pile respective.

+0

dang, trop lent. – 0x808080

+0

Attendez, vous pouvez donc accéder à ceux-ci d'une autre classe? Je ne comprends toujours pas la différence entre une variable publique et privée, comme avec One et Two. – DLA

+0

Imaginez que vous êtes dans une autre classe ... vous pouvez écrire ce code: HiThere hiObj = new HiThere(); if (hiObj.numberOne == hiObj.numberTwo) – 0x808080

9

numberOne et numberTwo sont des variables membres de la classe. numberThree et numberFour sont des variables locales, étendues à la fonction.
A côté de cela, vous ne pouvez pas déclarer un modificateur d'accès (privé/public) pour les variables locales.

+0

Ensuite, sa question ne fait pas de sens. Probablement une sorte de code pseudo-C#. –