Ich möchte den Unterschied zwischen den Modifikatoren public
und den internal
Sichtbarkeitsmodifikatoren kennen.
Wann internal
und wann sollten wir eine Klasse verwenden public
? Ich bin verwirrt, wann eine Methode sein sollte public
oder internal
.
Ich habe gelesen, dass internal
der Zugriff über die Assembly möglich ist, während er public
auch über die Assembly verwendet werden kann, in der der Unterschied liegt.
internal
und alle Methodenpublic
. Wenn Sie eine höhere Sichtbarkeit benötigen, können Sie die gesamte Klassepublic
erneut einstellen . Ich bin mir aber nicht sicher, ob es so verwendet werden soll oder nicht. Also google ich weiter ... edit Et voilà, gleiches Thema: stackoverflow.com/questions/9302236/…internal
ist nützlich, wenn Sie ein Mitglied deklarieren oder innerhalb einer DLL eingeben möchten, nicht außerhalb dieser ...normalerweise, wenn Sie ein Mitglied als deklarieren
Public
Sie von anderen DLLs darauf zugreifen können. Wenn Sie jedoch etwas in Ihrer Klassenbibliothek als öffentlich deklarieren müssen, können Sie es als deklarierenInternal
.in formeller Verteidigung: Interne Mitglieder sind direkt in der aktuellen Versammlung sichtbar ...
quelle
internal
ist auch nützlich, wenn Sie Unit-Tests schreiben. Mit demInternalsVisibleTo
Attribut kann Ihre Testassembly auf interne Methoden in Ihrer Code-Assembly zugreifen. Das heißt, Sie können Methoden testen, die für die Außenwelt privat erscheinen, ohne Reflexion zu verwenden.quelle
Auf die Öffentlichkeit kann auch außerhalb der Versammlung zugegriffen werden. Wenn Sie also eine Klasse haben, auf die nicht zugegriffen werden sollte, sollte jede Klasse in der Assembly darauf zugreifen können, dann ist intern das Richtige. Wenn Sie Zugriff von außen benötigen, verwenden Sie public.
quelle
Außerdem werden Eigenschaften, die als markiert
internal
sind, ausgelöst,BindingExpression path error
wenn sie für die Datenbindung in WPF verwendet werden. Diese müssen also vorhanden seinpublic
, damit sie ordnungsgemäß funktionieren, auch wenn die Datenbindung in derselben Assembly erfolgt.quelle
Wenn Sie das Assemble von außen referenzieren können, haben Sie den Umfang interner und öffentlicher Klassen
quelle