In C#, was ist der Unterschied zwischen public, private, protected, und keinen access-modifier?
Alle meine college-Jahre habe ich mit public
, und würde gerne wissen, der Unterschied zwischen public
, private
, und protected
?
Außerdem was will static
tun, als gegen nichts?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zugriffsmodifizierer
Wenn keine zugriffsmodifizierer gesetzt ist, wird eine standardmäßige access-modifier verwendet wird. Es gibt also immer eine form von access-modifier-auch wenn es nicht gesetzt wird.
Statische
Statische Klassen werden Häufig als Service verwendet werden, können Sie Sie wie folgt:
private protected
. Bitte haben Sie einen Blick auf: (blogs.msdn.microsoft.com/mazhou/2017/10/05/...)Öffentlichen - Wenn Sie sehen können, die Klasse, dann können Sie sehen, die Methode
Private - Wenn Sie Teil der Klasse, dann können Sie sehen, die Methode, sonst nicht.
Geschützt - das Gleiche wie die Privaten, sowie alle Nachkommen können auch sehen, die Methode.
Statische (Klassen -) - Erinnern sich an die Unterscheidung zwischen "Klasse" und "Objekt" ? Vergessen Sie alles, was. Sie sind die gleichen, die mit "statischen"... die Klasse ist die eine und einzige Instanz von sich selbst.
Statische (Methode) - Wenn Sie diese Methode verwenden, wird es einen Bezugsrahmen, der unabhängig von der eigentlichen Instanz der Klasse ist das Teil.
instance
ist nicht besser alsobject
weil es impliziert, dass eine Instanziierung eines Objekts.Einer grafischen übersicht (summary in a nutshell)
Für die Standardwerte wenn Sie keinen access modifier vor, siehe hier:
Standard-Sichtbarkeit für C# - Klassen und-member (Felder, Methoden, etc)?
Nicht verschachtelte
Verschachtelt:
Hinsichtlich der Frage der Nichts
Umbuchung des genial-Diagramme aus diese Antwort.
Hmm.
Siehe hier: Zugriffsmodifizierer.
Kurz gesagt:
Öffentlichkeit gibt die Methode oder geben Sie die vollständige Sichtbarkeit von anderen Typen/Klassen.
Private erlaubt nur der Typ mit der privaten Methode/variable Zugriff auf die private Methode/variable (beachten Sie, dass verschachtelte Klassen haben auch Zugriff auf die Klassen mit private Methoden/Variablen).
Geschützt ähnlich ist zu private, abgesehen von abgeleiteten Klassen können auch den Zugriff auf geschützte Methoden.
"Nichts" ist VB.NET's äquivalent zu null. Obwohl, wenn man sich auf "nichts" im Sinne von "keinen access-modifier", dann hängt es ab, obwohl eine sehr grobe Faustregel (natürlich in C#) ist, dass wenn Sie nicht explizit angeben, eine access-modifier der Methode/Variablendeklaration ist in der Regel als eingeschränkt, wie es sein kann.
also
ist effektiv das gleiche wie:
Den verlinkten MSDN-Artikel bieten wir eine vollständige Beschreibung, wenn es keine zugriffsmodifizierer explizit angegeben.
öffentlichen - können den Zugriff von jedem und überall.
private - kann nur zugegriffen werden, die mit in der Klasse, deren Teil es ist.
geschützt - kann nur zugegriffen werden, die mit in der Klasse oder jedes Objekt erbt aus der Klasse.
Nichts ist wie null, aber in VB.
Statisch heißt, Sie haben eine Instanz des Objekts, Methode für jede Instanz der Klasse.
Doch einen anderen visuellen Ansatz der aktuellen access modifier (C# 7.2). Hoffentlich wird das schema hilft, sich zu erinnern, ist es einfacher
(klicken Sie auf das Bild für eine interaktive Ansicht).
Aussen Innen
Wenn Sie kämpfen, um zu erinnern, die zwei-formuliert zugriffsmodifizierer, erinnern außen-innen -.
mmm...
Statisch bedeutet, dass Sie zugreifen können, die Funktion, ohne eine Instanz der Klasse.
Können Sie direkt aus der definition der Klasse.
Den status des Privaten zeigt, dass die Variablen kann nur zugegriffen werden, Objekte der gleichen Klasse. Geschützt status erweitert, der Zugang zu den Nachkommen gehören der Klasse als gut.
"aus der obigen Tabelle können wir sehen, den Unterschied zwischen private und protected... bin denke, dass beides das gleiche ....also, was die Notwendigkeit, dass zwei getrennte Befehl"
Überprüfen MSDN link für mehr Informationen
Diese zugriffsmodifizierer angeben, wo Ihre Mitglieder sind sichtbar. Sie sollten wahrscheinlich Lesen Sie dieses. Nehmen Sie den link von IainMH als Ausgangspunkt.
Statische Mitglieder einer pro Klasse und nicht eine pro Instanz.
Vorsichtig, beobachten Sie Ihre Zugänglichkeit Ihrer Klassen. Öffentlichen und geschützten Klassen und Methoden sind standardmäßig für jeden zugänglich.
Auch Microsoft ist nicht sehr explizite zeigen zugriffsmodifizierer (public, protected, etc.. keywords), wenn neue Klassen in Visual Studio erstellt werden. Also, nehmen gute Pflege, und denken Sie über Ihre Zugänglichkeit Ihrer Klasse, weil es die Tür zu Ihrer Umsetzung Interna.
Ich denke, es ist zu guter OOP-design. Wenn Sie ein Entwickler sind, der eine Bibliothek, die Sie wollen, um zu verbergen das Innenleben der Bibliothek. Auf diese Weise können Sie ändern Sie Ihre Bibliothek Innenleben später auf. Setzen Sie also Ihre Mitglieder und Hilfsmethoden als private und nur Methoden der Schnittstelle sind öffentlich. Methoden, die überschrieben werden sollen, sollten geschützt werden.
C# hat insgesamt 6 zugriffsmodifizierer:
private: Das Mitglied erklärt mit diese Zugänglichkeit kann sichtbar sein, innerhalb der mit Typ, es ist nicht sichtbar, auch abgeleitete Typen, andere Typen in der gleichen assembly oder Arten, die außerhalb der mit der Montage. d.h., der Zugriff ist beschränkt auf die mit nur Typ.
geschützt: Das Mitglied erklärt mit diese Zugänglichkeit kann sichtbar sein, innerhalb der Arten abgeleitet vom übergeordneten Typ innerhalb der mit der Montage, und die Typen, die, abgeleitet aus den mit Typ-außerhalb des mit der Montage. d.h., der Zugriff ist beschränkt auf abgeleitete Typen, die mit type.
internen: Das Mitglied erklärt mit diese Zugänglichkeit kann sichtbar innerhalb der assembly, in der sich das Mitglied, es ist nicht sichtbar bei Montage außerhalb des mit der Montage. d.h., der Zugriff ist beschränkt auf die mit der Montage nur.
internen, geschützten: Das Mitglied erklärt mit diese Zugänglichkeit kann sichtbar sein, innerhalb der Arten abgeleitet vom übergeordneten Typ innerhalb oder außerhalb der mit der Montage, ist es auch sichtbar für alle Arten innerhalb der mit der Montage. d.h., der Zugriff ist beschränkt auf die mit der Montage oder abgeleitete Typen.
öffentlichen: Das Mitglied erklärt mit diese Zugänglichkeit kann sichtbar innerhalb der assembly, in der sich das Mitglied, oder jede andere Versammlung, verweist auf die mit der Montage. d.h., der Zugriff ist nicht beschränkt.
C# 7.2 ist das hinzufügen einer neuen Ebene der Zugänglichkeit:
private protected: Das Mitglied erklärt mit diese Zugänglichkeit kann sichtbar sein, innerhalb der Arten abgeleitet aus diesen übergeordneten Typ innerhalb der mit der Montage. Es ist nicht sichtbar für alle Arten stammt nicht aus dem enthaltenden Typ oder außerhalb des enthaltenden Baugruppe. d.h., der Zugriff ist beschränkt auf abgeleitete Typen innerhalb der mit der Montage.
Quelle inklusive einem Beispiel-code of the new private protected access modifier