Was ist der Unterschied zwischen "private" und "protected Internal"?
Ich möchte nur wissen, was ist eigentlich der Unterschied zwischen private und protected internal zugriffsspezifizierer. Ich weiß
Sichtbar eine eigene Klasse Mitglieder: private und protected internal JA
Sichtbar, zum Objekt von anderen Klassen: Beide KEINE
Sichtbar auf Objekte von anderen Klassen außerhalb der namespace-Sammlung: Beide KEINE
Sichtbar, zum Objekt von Kind-Klassen außerhalb der namespace-Sammlung: Beide KEINE
Wenn private das gleiche tun wie geschützten internen dann warum brauchen wir die beide, nur man sollte genug sein, oder nicht?
InformationsquelleAutor der Frage avirk | 2012-06-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
protected internal
Mitglied ist sichtbar für jeden code in der aktuellen assembly oder in einer abgeleiteten Klasse in einer anderen assembly. In technischen Worten, es sind die in logische Disjunktion vonprotected
undinternal
.private
Element sichtbar ist nur für code, der in der gleichen Klasse.protected internal
ist eigentlich die zweite fast tabulosen zugriffsmodifizierer nachpublic
.Es ist erwähnenswert, dass
protected
ist wohl mehr offener alsinternal
da es ermöglicht den Zugriff von code, die Sie haben keine Kontrolle über (d.h. andere Baugruppen). Währendinternal
ermöglicht den Zugriff von alle code in der aktuellen assembly, dieser code gehört Ihnen, und Sie haben die Kontrolle über Sie!Paraphrase,
protected
(undprotected internal
) die Mitglieder sind Teil der public-API Ihrer Versammlung (und sollte daher dokumentiert werden).internal
Mitglieder nicht.InformationsquelleAutor der Antwort Will Vousden
Einer grafischen übersicht (summary in a nutshell)
InformationsquelleAutor der Antwort Stefan Steiger
private
ist nur sichtbar eigenen Klasse, in der Erwägung, dassprotected internal
ist sichtbar an untergeordnete Klassen sowie zu anderen Klassen im namespace Sammlung.InformationsquelleAutor der Antwort Mattias Buelens
private
geschützten internen
InformationsquelleAutor der Antwort techno
Ich denke, dass protected internal bedeutet, dass nur Klassen, die Erben und sind in der gleichen Versammlung kann sehen, dass Eigentum. Diejenigen, die leiten die Klasse und werden von verschiedenen Montage -, kann es nicht sehen.
LE: Lesen Mattias Buelens Kommentar.
InformationsquelleAutor der Antwort Andrei Neagu
Sprechen, praktisch, ich in der Regel verwenden Sie nur private für Variablen, um sicherzustellen, dass Sie nicht missbraucht werden von anderen Klassen.
Geschützten internen, jedoch werde ich oft für Methoden, die ich nicht wollen, dass die meisten anderen Klassen nutzen zu können, aber ich möchte in der Lage sein, um Zugriff zum schreiben von Testfällen. Es ist sehr praktisch, da es erlaubt test-Klassen erzeugt werden, die sane-namespace oder Paket-Struktur, kann dann der Zugriff auf diese geschützten internen Methoden ohne unangemessen öffnung für den rest der Welt.
Dieser Ansatz erfordert ein Konzept, coding, wo das schreiben leicht "testbar" - code ist eine Priorität. Wenn das war nicht mein Ansatz, ich bin mir nicht sicher, ich würde finden viele Gelegenheiten zu verwenden, protected internal.
InformationsquelleAutor der Antwort Geoff
Ich versuche zu verstehen, was die Unterschiede zwischen geschützten internen und intern .NET-Kontext durch das Lesen der Beschreibung verschiedene Foren und blogs. Ich habe wirklich nicht verstanden, dann habe ich erstellt 2 separate Montage mit VS2015. Wahrscheinlich jetzt habe ich grundlegendes Verständnis. Ich würde gerne mit Ihnen teilen, könnte es hilfreich sein, jemand ist. Ich habe versucht, verwenden Sie die Felder deklariert, die in eine assembly von einer anderen assembly. Auch habe ich versucht von einer Klasse abgeleitet, dass erklärt wurde, in einer anderen assembly.
Hier ist der code für class1.cs von assembly 1
Hier ist code aus einer anderen assembly, class2.cs
mit Z_Dll_1;
InformationsquelleAutor der Antwort RotatingWheel