2010-12-14 9 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; 
     } 
    } 
} 

Kann mir jemand sagen, den Unterschied zwischen den Variablen NumberOne, numberTwo, numberThree und numberFour in diesem Codeauszug?Privat vs öffentlichen Variablen

+0

Dies scheint nicht wie gültiger C# -Code zu sein. IIRC Sie können kein öffentliches/privates Schlüsselwort vor lokalen Variablen setzen. Sind Sie sicher, dass Ihr Beispiel korrekt ist? –

+1

Dies würde sich nicht kompilieren. 'function yo' ist völlig ungültig und macht keinen Sinn. –

+2

Was soll 'Funktion yo' sein? Der Name deutet auf eine Funktion hin, aber die Abwesenheit von Parametern und die Verwendung von "öffentlich" und "privat" deuten auf eine innere Klasse hin. Das Code-Snippet wird nicht kompiliert, es ist nicht wirklich klar, was Sie beabsichtigten. – Juliet

Antwort

1

numberOne und numberTwo sind öffentliche Instanzvariablen im Heap. Auf sie kann direkt innerhalb eines Objekts zugegriffen werden, das eine Instanz des hither-Objekts besitzt. numberThree und numberFour können nicht auf diese Weise aufgerufen werden, da sie keine Instanzvariablen sind und innerhalb des Bereichs der Funktion yo gekapselt sind und in dem jeweiligen Stapel gespeichert sind.

+0

dang, zu langsam. – 0x808080

+0

Warte, also kannst du von einer anderen Klasse auf diese zugreifen? Ich verstehe immer noch nicht den Unterschied zwischen einer öffentlichen und privaten Variable, wie bei Eins und Zwei. – DLA

+0

Geben Sie vor, Sie sind in einer anderen Klasse ... Sie können diesen Code schreiben: HiThere hiObj = new HiThere(); if (hiObj.numberOne == hiObj.numberTwo) – 0x808080

9

numberOne und numberTwo sind Membervariablen der Klasse. numberThree und numberFour sind lokale Variablen, die auf die Funktion beschränkt sind.
Außerdem können Sie keinen Zugriffsmodifizierer (privat/öffentlich) für lokale Variablen deklarieren.

+0

Dann macht seine Frage keinen Sinn. Wahrscheinlich eine Art Pseudo-Code. –