16.8.08

Modifizierer in C#

Zugriffsmodifizierer für Klassenmember


ModifiziererBeschreibung
publicUneingeschränkt zugänglich.
protected
internal
Zugänglich für die eigene Klasse, von dieser abgeleitete Klassen und das eigene Programm (Kompilierungsgemeinschaft).
internalZugänglich für das eigene Programm.
protectedZugänglich für die eigene und abgeleitete Klassen.
privateZugänglich für die eigene Klasse. Dies ist der Standardzugriff für Member, die ohne Modifizierer deklariert wurden.

Spezielle Klassen


ModifiziererBeschreibung
staticEine als static deklarierte Klasse darf nur statische Member enthalten. Statische Klassen können weder instanziiert noch vererbt werden.
abstractDie Klasse kann nur als Basisklasse für die Definition weiterer Klassen verwendet werden. Eine Instanziierung der Klasse ist nicht möglich.
sealedDie Klasse kann nicht als Basisklasse für die Definition weiterer Klassen verwendet werden.

Feldmodifizierer



ModifiziererBeschreibung
staticStatische Felder, auch Klassenvariablen genannt, existieren nur einmal. Methoden der Klasse können direkt auf die statischen Felder ihrer Klasse zugreifen. Ansonsten erfolgt der Zugriff über den Klassennamen.
readonlyDeklariert ein Feld als konstant. Einem solchen Feld können Sie nur im Zuge der Deklaration oder innerhalb eines Konstruktors einen Wert zuweisen. Später kann der Wert nur noch abgefragt werden. Dieser Modifizierer kann nicht in Kombination mit volatile oder static vergeben werden. (readonly-Felder sind automatisch static.)
volatileSchützt ein Feld vor ungewünschten Optimierungen durch den Compiler, die zu Fehlern führen können, wenn mehrere Threads unsynchronisiert auf das Feld zugreifen. Dieser Modifizierer kann nicht in Kombination mit readonly vergeben werden.
newZeigt an, dass ein geerbtes Feld bewusst verborgen wird.

Methodenmodifizierer



ModifiziererBeschreibung
staticStatische Methode, die nicht über Objekte der Klasse, sondern über die Klasse angesprochen wird.
externZeigt an, dass die Methode in einer anderen Assembly implementiert wird. Mit extern deklarierte Methoden werden ohne Anweisungsblock definiert. Die Verbindung zur Implementierung wird meist über ein DllImport-Attribut hergestellt.
Die folgenden Modifizierer regeln die Vererbung von Methoden
virtualVirtuelle Methode. Virtuelle Methoden können in abgeleiteten Klassen überschrieben werden (also unter Beibehaltung der Signatur mit neuem Anweisungsblock verbunden werden).
overrideZeigt an, dass hier nicht eine neue Methode eingeführt, sondern eine geerbte Methode überschrieben wird.
newZeigt an, dass diese Methode eine geerbte Methode gleicher Signatur verdeckt.
abstractFührt eine virtuelle Methode ein, ohne jedoch für diese eine Implementierung vorzugeben. Die Methode muss(!) also in abgeleiteten Klassen überschrieben werden, wenn von diesen Klassen Objekte erzeugt werden sollen.
sealedZeigt an, dass diese Methode in abgeleiteten Klassen nicht weiter überschrieben werden kann. Darf nur in Kombination mit override verwendet werden, d. h. die Methode muss selbst eine geerbte Methode überschreiben.

(Quelle: Dirk Louis, Shinja Strasser: Microsoft Visual C# 2008 – Das Entwicklerbuch
Microsoft Press Deutschland, ISBN:978-3-86645-507-8)

Nvidia's GauGan App

NVIDIA's GauGAN AI Machine Learning Tool creates photorealistic images from Simple Hand Doodling http://nvidia-research-mingyuliu.com/...