codestory

Zugriffsmodifikator (Access Modifier) in C#

  1. Modifier im CSharp
  2. Die Überblick über access modifier
  3. private access modifier
  4. private constructor
  5. protected access modifier
  6. internal access modifier
  7. protected internal access modifier
  8. public access modifier
  9. der Zugang und die Inheritance

1. Modifier im CSharp

Die access modifiers im CSharp bestimmt den Zugang (der Umfang) in die Database der Felder, der Methode, des Konstructor (Constructor) oder der Klasse

Es gibt 5 Type zur access modifiers im CSharp:
  • private
  • protected
  • internal
  • protected internal
  • public

2. Die Überblick über access modifier

Modifier
Die Beziehung
private
Der Zugang wird in der Bereich von der Definition von Class begrenzt. Das ist der default-Zugangtyp wenn nicht bestimmt
protected
Der Zugang wird in der Bereich von der Definition von Class begrenzt und alle Klasse, die von der Klasse erben
internal
Der Zugang wird in der Bereich von Assembly vom aktuellen Projekt
protected internal
Der Zugang wird in der Bereich von Assembly und in der Definitionsklasse oder die SubKlasse
public
Keine Begrenzung bei dem Zugang zu der veröffentlichen Mitglieder (public)
Die folgende Tabelle bringt Ihnen eine Überblick über die Benutzung vom access modifier.
Gleiches Assembly
Anders Assembly
In der Definitionsklasse?
In der Sub-Klasse
Außer der Definitionsklasse, außer der Sub-Klasse
In der Sub-Klasse
Außer Sub-Klasse
private
Y
protected
Y
Y
Y
internal
Y
Y
Y
protected internal
Y
Y
Y
public
Y
Y
Y
Y
Y
Sie können durch die folgenden Beispiel mehr detailiert verstehen

3. private access modifier

private access modifier erlaubt nur den Zugang in der internen Klasse
Sie können in die private Miglieder außer der Klasse, die die Mitglieder definiert zugehen. CSharp meldet den Fehler bei der Zeitpunkt von der Klasse-Kompilier

4. private constructor

Der Constructor, die Methode, der Feld werden als die Mitglieder in der Klasse genannt
Wenn Sie eine Klasse erstellen und einen privaten Constructor haben, können Sie ein Objekt des Klasse aus diesen private constructor vom außen nicht erstellen. Sehen Sie das folgende Beispiel

5. protected access modifier

protected access modifier kann innerhalb package, oder außer vom package zugreifen aber durch die Erben
protected access modifier sind nur für field, method und constructor angewendet. Er kann nicht für die Klasse (class, interface, ..) angewendet werden.

6. internal access modifier

internal ist der Zugang für die Internen, es wird in einem Assembly beschränkt

Ein Assembly ist ein Produkt zur Kompilierung Ihrer Code. Es ist normalerweise ein DLL, aber EXE kann auch ein assembly sein. Es ist die kleinste Einheit der Implementierung alles Projekt .NET .

Assembly enthaltet konkret die Code .NET nach MSIL (Microsoft Intermediate language ), die zur Computer Code (Native code) kompiliert wird ("JITted" - durch den Kompiler Just-In-Time kompiliert wird) in dem ersten Implementation im PC. Das ist die kompilierte Code , die in Assembly speichert und zur nächsten Aufruf benutzt wird

7. protected internal access modifier

Der Zugang protected internal ist die Verbindung zwischen den Zugang protected und internal. Wenn ein Mitglieder der Klasse den Zugang hat, können Sie in diesen Mitglieder in der Klasse, die sie oder die Sub-Klasse definiert hat und in einer gleichen Assembly liegen

8. public access modifier

public access modifier ist starkste und in allen Orten zugreifbar. Er hat den breitsten Zugangsumfang im Vergleich zu anderen modifier

9. der Zugang und die Inheritance

Im CSharp können Sie eine Methode von der Vater-Klasse durch eine Methode überschreiben (override), die den gleichen Name, den gleichen Parameter, den gleichen Rückgabestyp bei der Subklasse hat. Allerdings dürfen Sie ihren Zugang (access modifier) nicht ändern
Allerdings können Sie eine Methode mit dem gleichen Name, dem gleichen Parameter, dem gleichen Rückgabetyp aber den verschiedenen Zugang bei der Benutzung vom Schlüsselwort new erstellen, in der Praxis ist das eine andere Methode, die sich den Vater-Klasse unterscheidet
Der Unterschied zwischen override und new wird im Unterlagen "Die Inheritance und Polymorphie im CSharp" erklärt. Sie können bei... schauen