Objektorientierte Programmierung (C# und Visual Basic)

Alle verwaltete Sprachen in der.NET Framework, z. B. Visual Basic und C#, bieten vollständigen Unterstützung für objektorientierte Programmierung einschließlich Kapselung, Vererbung und Polymorphie.

Kapselung bedeutet, dass eine Gruppe verwandter Eigenschaften, Methoden sowie anderer Member als eine Einheit bzw. ein Objekt behandelt werden.

Vererbung Beschreibt die Fähigkeit, neue Klassen basierend auf einer vorhandenen Klasse erstellen.

Polymorphismus bedeutet, dass Sie mehrere Klassen untereinander austauschen können, obwohl jede Klasse dieselben Eigenschaften oder Methoden auf unterschiedliche Weise implementiert.

Dieser Abschnitt beschreibt folgenden Themen:

  • Klassen und Objekte

    • Klassenmember

      Eigenschaften und Felder

      Methoden

      Konstruktoren

      Destruktoren

      Ereignisse

      Geschachtelte Klassen

    • Zugriffsmodifizierer und Zugriffsebenen

    • Instanziierung von Klassen

    • Statische freigegebene () Klassen und Member

    • Anonyme Typen

  • Vererbung

    • Überschreiben von Membern
  • Schnittstellen

  • Generika

  • Delegaten

Klassen und Objekte

Die Begriffe Klasse und Objekt Manchmal dienen austauschbar, aber in Wirklichkeit Klassen beschreiben die Typ Objekte, während Objekte verwendet werden. Instanzen der Klassen.Daher ist das Erstellen eines Objekts bezeichnet Instanziierung.Verwenden die Blaupause Analogie, eine Klasse ist ein Bauplan und ein Objekt ist ein anhand dieses Bauplans errichtetes Gebäude.

Eine Klasse definiert:

Ende der SampleClass-Klasse
{} SampleClass-Klasse

Visual Basic und C# bieten auch eine einfachere Version von Klassen aufgerufen Strukturen die sind nützlich, wenn Sie müssen großes Array von Objekten erstellen und führen nicht zu viel Arbeitsspeicher dafür nutzen möchten.

Eine Struktur definieren:

Struktur SampleStructure End Structure
Struct {SampleStruct}

Weitere Informationen finden Sie unter:

Dd460654.collapse_all(de-de,VS.110).gifKlassenmember

Jede Klasse kann andere haben. Klassenmember enthalten Eigenschaften, die beschreiben, Klassendaten, Methoden, die Verhalten einer Klasse definieren und Ereignisse, die Kommunikation zwischen verschiedenen Klassen und Objekten zu ermöglichen.

Dd460654.collapse_all(de-de,VS.110).gifEigenschaften und Felder

Felder und Eigenschaften darstellen von Informationen, die ein Objekt enthält.Felder sind wie Variablen, da sie gelesen oder direkt festgelegt werden können.

Zum Definieren eines Felds:

Klasse SampleClass Public SampleField als Zeichenfolge EndClass
Klasse SampleClass {public String SampleField; }

Eigenschaften verfügen über Get- und set-Prozeduren, die mehr Kontrolle über die Festlegung bzw. Rückgabe von Werten bereitstellen.

C# und Visual Basic können Sie entweder ein privates Feld für das Speichern des Eigenschaftswerts erstellen oder so genannte automatisch implementierte Eigenschaften, die dieses Feld automatisch im Hintergrund erstellen und die grundlegende Logik für die Property-Prozeduren verwenden.

So definieren Sie eine automatisch implementierte Eigenschaft:

Klasse SampleClass öffentliche Eigenschaft SampleProperty als Zeichenfolge EndClass
Class SampleClass {public Int SampleProperty {Get; Set; } }

Wenn Sie einige zusätzliche Vorgänge zum Lesen und schreiben den Eigenschaftswert ausführen müssen, ein Feld zum Speichern des Eigenschaftswerts definieren und die grundlegende Logik für Speicherung und Abruf bereitstellen:

Class Samplelass Private M_Sample als Zeichenfolge Public Property Sample() als Zeichenfolge Get ' Gibt den Wert im Feld gespeichert. Zurückgeben von M_Sample End Get Set(ByVal Value As String) " Den Wert im Feld gespeichert. M_Sample = Wert End Set End-Eigenschaft End Class
Class SampleClass {private Int _sample; public Int Beispiel {/ / Rückgabewert in einem Feld gespeichert. Get {return _sample; } / / Speichern Sie den Wert im Feld. Legen Sie {_sample = Wert; } } }

Die meisten Eigenschaften verfügen über Methoden oder Verfahren zum Festlegen und Abrufen den Eigenschaftenwert.Allerdings können Sie schreibgeschützte oder lesegeschützte Eigenschaften, um zu verhindern, die geändert oder gelesen erstellen.In Visual Basic können Sie ReadOnly und WriteOnly Schlüsselwörter.In C# können Sie weglassen der Get oder Legen Sie Property-Methode.In Visual Basic und C#, können nicht automatisch implementierte Eigenschaften jedoch schreibgeschützt oder lesegeschützt sein.

Weitere Informationen finden Sie unter:

Dd460654.collapse_all(de-de,VS.110).gifMethoden

A -Methode ist eine Aktion, die ein Objekt ausführen kann.

HinweisHinweis

In Visual Basic gibt es zwei Möglichkeiten, eine Methode zu erstellen: die Sub Anweisung wird verwendet, wenn die Methode keinen Wert zurückgibt, wird; die Funktion Anweisung wird verwendet, wenn eine Methode einen Wert zurückgibt.

Eine Methode einer Klasse zu definieren:

Class SampleClass Public Function SampleFunc (ByVal SampleParam As String) ' Fügen Sie code hier End Function End Class
class SampleClass {public Int SampleMethod (String SampleParam) {/ / fügen Sie hier Code}}

Eine Klasse kann mehrere Implementierungen aufweisen oder Überladungen, der die gleiche Methode, die die Anzahl der Parameter oder Parametertypen unterscheiden.

Eine Methode zu überladen:

Overloads Sub Display(ByVal theChar As Char) ' Fügen Sie Code, die Char-Daten anzeigt. End Sub Overloads Sub Display(ByVal theInteger As Integer) ' Fügen Sie Code, die ganzzahlige Daten anzeigt. EndSub
public Int SampleMethod (String SampleParam) {}; public Int SampleMethod (Int SampleParam) {}

In den meisten Fällen deklarieren Sie eine Methode innerhalb einer Klassendefinition.Allerdings unterstützen Visual Basic und C# auch Erweiterungsmethoden können Sie einer vorhandenen Klasse außerhalb der Klasse der eigentlichen Klassendefinition Methoden hinzuzufügen.

Weitere Informationen finden Sie unter:

Dd460654.collapse_all(de-de,VS.110).gifKonstruktoren

Konstruktoren sind Klassenmethoden, die automatisch ausgeführt werden, wenn ein Objekt eines bestimmten Typs erstellt wird.Konstruktoren initialisieren normalerweise die Datenmember des neuen Objekts.Ein Konstruktor kann nur einmal der Erstellung einer Klasse ausgeführt.Darüber hinaus wird der Code im Konstruktor immer vor jedem anderen Code in einer Klasse ausgeführt.Allerdings können Sie mehrere Konstruktorüberladungen auf die gleiche Weise wie bei jeder anderen Methode erstellen.

So definieren Sie einen Konstruktor für eine Klasse:

Class SampleClass Sub New(ByVal s As String) / / fügen Sie hier Code hinzu. End Sub EndClass
public Class SampleClass {public SampleClass() {/ / fügen Sie hier Code}}

Weitere Informationen finden Sie unter:

Dd460654.collapse_all(de-de,VS.110).gifDestruktoren

Destruktoren werden verwendet, um von Klasseninstanzen.In der.NET Framework verwaltet der Garbage Collector automatisch die Reservierung und Freigabe von Arbeitsspeicher für die verwalteten Objekte in der Anwendung.Möglicherweise benötigen Sie noch Destruktoren nicht verwalteten Ressourcen bereinigen, die die Anwendung erstellt.Es können nur einen Destruktor für eine Klasse sein.

Weitere Informationen zu Destruktoren und Garbagecollection in der.NET Framework finden Sie unter Garbage Collection.

Dd460654.collapse_all(de-de,VS.110).gifEreignisse

Ereignisse aktivieren eine Klasse oder ein Objekt, das Benachrichtigen von anderen Klassen oder Objekte Aktionen von Interesse.Die Klasse, die das Ereignis sendet (oder auslöst) wird aufgerufen, die Publisher und es werden die Klassen, die das Ereignis empfangen (oder behandeln) aufgerufen. Abonnenten.Weitere Informationen zu Ereignissen wie Sie sie werden ausgelöst und behandelt, finden Sie unter Behandeln und Auslösen von Ereignissen.

Dd460654.collapse_all(de-de,VS.110).gifGeschachtelte Klassen

Eine Klasse in einer anderen Klasse definiert wird aufgerufen. geschachtelt.Standardmäßig ist die geschachtelte Klasse privat.

Container-Klasse, die geschachtelte Klasse ' Hier Code hinzufügen. End Class EndClass
Container-Klasse {Nested class {/ / hier Code hinzufügen. } }

Um eine Instanz der geschachtelten Klasse zu erstellen, verwenden Sie den Namen der Container-Klasse, gefolgt von einem Punkt und dann gefolgt vom Namen der geschachtelten Klasse:

Dim NestedInstance als Container.Nested = New Container.Nested()
Container.Nested NestedInstance = new Container.Nested()

Dd460654.collapse_all(de-de,VS.110).gifZugriffsmodifizierer und Zugriffsebenen

Alle Klassen und Klassenmember können welche Zugriffsebene angeben mit für andere Klassen zur Verfügung Zugriffsmodifizierer.

Die folgenden Zugriffsmodifizierer sind verfügbar:

Visual Basic-Modifizierer

C#-Modifizierer

Definition

Public (Visual Basic)

Öffentliche

Den Typ oder Member kann von jedem Code in der gleichen Assembly oder einer anderen Assembly, die darauf verweist, zugegriffen werden.

Private (Visual Basic)

Private

Der Typ oder Member kann nur von Code in der gleichen Klasse zugegriffen werden.

Protected (Visual Basic)

geschützt

Der Typ oder Member kann nur von Code in der gleichen Klasse oder in einer abgeleiteten Klasse zugegriffen werden.

Friend (Visual Basic)

interne

Der Typ oder Member kann von jedem Code in derselben Assembly, nicht jedoch von einer anderen Assembly zugegriffen werden.

Protected Friend

protected internal

Der Typ oder Member kann von jedem Code in der gleichen Assembly oder von jeder abgeleiteten Klasse in einer anderen Assembly zugegriffen werden.

Weitere Informationen finden Sie unter Zugriffsebenen in Visual Basic und Zugriffsmodifizierer (C#-Programmierhandbuch).

Dd460654.collapse_all(de-de,VS.110).gifInstanziierung von Klassen

Um ein Objekt zu erstellen, müssen Sie eine Klasse instanziieren oder eine Klasseninstanz erstellen.

Dim SampleObject als neue SampleClass()
SampleClass SampleObject = new SampleClass();

Nach der Instanziierung einer Klasse, können Sie Felder und Eigenschaften der Instanz Werte zuweisen und Klassenmethoden aufrufen.

' Festlegen eines Eigenschaftswerts. sampleObject.SampleProperty = "Sample String" ' Eine Methode aufrufen. sampleObject.SampleMethod()
/ / Einen Eigenschaftswert festzulegen. sampleObject.sampleProperty = "Sample String"; / / Eine Methode aufrufen. sampleObject.sampleMethod();

Um Eigenschaften bei der Instanziierung der Klasse Werte zuzuweisen, verwenden Sie Objektinitialisierer:

Dim SampleObject = SampleClass New With {.FirstProperty = "A".SecondProperty = "B"}
/ / Einen Eigenschaftswert festzulegen. SampleClass SampleObject neue SampleClass = {FirstProperty = "A", SecondProperty = "B" };

Weitere Informationen finden Sie unter:

Dd460654.collapse_all(de-de,VS.110).gifStatische freigegebene () Klassen und Member

Ein Static (shared in Visual Basic) Member der Klasse ist eine Eigenschaft, Prozedur oder Feld, das von allen Instanzen einer Klasse gemeinsam verwendet wird.

So definieren Sie einen statischen (freigegebenen) Member:

Klasse SampleClass Public Shared SampleString As String = "Sample String" EndClass
static Class SampleClass {public static String SampleString = "Sample String"; }

Um den statischen (freigegeben) Member zuzugreifen, verwenden Sie den Namen der Klasse ohne ein Objekt dieser Klasse zu erstellen:

MsgBox(SampleClass.SampleString)
Console.WriteLine(SampleClass.SampleString);

Statische (freigegebene) Klassen in C# und Visual Basic-Module sind statische (freigegebene) Member und können nicht instanziiert werden.Statische (freigegebene) Member können nicht auch nicht-statischen (nicht freigegebene) Eigenschaften, Felder oder Methoden zugreifen.

Weitere Informationen finden Sie unter:

Dd460654.collapse_all(de-de,VS.110).gifAnonyme Typen

Anonyme Typen ermöglichen es Ihnen, Objekte zu erstellen, ohne eine Klassendefinition für den Datentyp zu schreiben.Stattdessen generiert der Compiler eine Klasse für Sie.Die Klasse hat keinen verwendbaren Namen und enthält die Eigenschaften, die Sie in der Deklaration des Objekts angeben.

So erstellen Sie eine Instanz eines anonymen Typs:

' SampleObject ist eine Instanz eines einfachen anonymen Typs. Dim SampleObject = New With {Schlüssel.FirstProperty = "A".SecondProperty = "B"}
/ / SampleObject eine Instanz eines einfachen anonymen Typs ist. Var SampleObject = new {FirstProperty = "A", SecondProperty = "B" };

Weitere Informationen finden Sie unter:

Vererbung

Vererbung ermöglicht Ihnen, eine neue Klasse erstellen, die wiederverwendet wird, erweitert und ändert das Verhalten, das in einer anderen Klasse definiert ist.Die Klasse, deren Member vererbt werden, bezeichnet die Basisklasse, und die Klasse, die diese Member erbt wird aufgerufen, die abgeleitete Klasse.Alle Klassen in C# und Visual Basic erben jedoch implizit von der Object Klasse, die unterstützt und Low-Level-Dienste für alle Klassen bereitstellt.

HinweisHinweis

Verwaltete Sprachen in der.NET Framework unterstützen Mehrfachvererbung nicht i.e. können Sie nur eine Basisklasse für eine abgeleitete Klasse angeben.

Von einer Basisklasse erben:

Klasse DerivedClass erbt BaseClass End Class
{DerivedClass:BaseClass}-Klasse

Standardmäßig können alle Klassen vererbt werden.Sie können jedoch angeben, ob eine Klasse nicht als Basisklasse verwendet werden, oder erstellen Sie eine Klasse, die nur als Basisklasse verwendet werden kann.

Geben Sie an, dass eine Klasse als Basisklasse verwendet werden kann:

NotInheritable-Klasse SampleClass End Class
Public sealed Class A {}

Um anzugeben, dass eine Klasse nur als Basisklasse verwendet werden kann und kann nicht instanziiert werden:

MustInherit Class BaseClass End Class
public abstract Class B {}

Weitere Informationen finden Sie unter:

Dd460654.collapse_all(de-de,VS.110).gifÜberschreiben von Membern

Standardmäßig erbt eine abgeleitete Klasse alle Member der Basisklasse.Wenn Sie das Verhalten des geerbten Members ändern möchten, müssen Sie es überschreiben.Das heißt, können Sie eine neue Implementierung der Methode, Eigenschaft oder des Ereignisses in der abgeleiteten Klasse definieren.

Die folgenden Modifizierer wird gesteuert, wie Eigenschaften und Methoden überschrieben werden:

Visual Basic-Modifizierer

C#-Modifizierer

Definition

Overridable (Visual Basic)

virtual (C#-Referenz)

Einen Klassenmember in einer abgeleiteten Klasse überschrieben werden kann.

Overrides (Visual Basic)

override (C#-Referenz)

Überschreibt einen virtuellen (überschreibbaren) Member in der Basisklasse definiert.

NotOverridable (Visual Basic)

Nicht unterstützt

Verhindert, dass ein Element in einer erbenden Klasse überschrieben wird.

MustOverride (Visual Basic)

abstract (C#-Referenz)

Erfordert, dass ein Klassenmember in der abgeleiteten Klasse überschrieben werden.

Shadows (Visual Basic)

new-Modifizierer (C#-Referenz)

Blendet einen von einer Basisklasse geerbten member

Schnittstellen

Schnittstellen, wie Klassen definiert eine Reihe von Eigenschaften, Methoden und Ereignisse.Aber im Gegensatz zu Klassen, Schnittstellen bieten keine Implementierung.Sie werden von Klassen implementiert und als von Klassen unabhängige Entitäten definiert.Eine Schnittstelle stellt einen Vertrag dar, insofern eine Klasse, die eine Schnittstelle implementiert jeden Aspekt dieser Schnittstelle implementieren muss, genau wie es definiert wurde.

Eine Schnittstelle zu definieren:

Öffentliche Schnittstelle ISampleInterface Sub DoSomething() Endinterface
Schnittstelle ISampleInterface {void doSomething(); }

Eine Schnittstelle in einer Klasse implementiert:

Class SampleClass implementiert ISampleInterface Sub DoSomething ' Implementierung der Methode. End Sub EndClass
SampleClass-Klasse: ISampleInterface {void ISampleInterface.SampleMethod() {/ / Methodenimplementierung. } }

Weitere Informationen finden Sie unter:

Generika

Klassen, Strukturen, Schnittstellen und Methoden in der.NET Framework können Typparameter definieren die Typen von Objekten, die sie speichern oder verwenden können.Das am häufigsten verwendete Beispiel für Generika ist eine Auflistung, in dem den Typ der Objekte in einer Auflistung gespeichert werden soll.

So definieren Sie eine generische Klasse:

SampleGeneric (Of T) öffentlichen Klassenfeld als T EndClass
Public Class SampleGeneric <T> {Öffentliche T Feld; }

So erstellen Sie eine Instanz einer generischen Klasse:

Dim SampleObject als neue SampleGeneric(Of String) sampleObject.Field = "Sample String"
SampleGeneric <string> SampleObject = new SampleGeneric <string> (); sampleObject.Field = "Sample String";

Weitere Informationen finden Sie unter:

Delegaten

A Delegieren ein Typ, der eine Methodensignatur definiert ist, und einen Verweis auf eine beliebige Methode mit einer kompatiblen Signatur bereitstellen können.Sie können die Methode über den Delegaten aufrufen (oder aufrufen).Delegaten werden verwendet, um Methoden zu anderen Methoden als Argumente übergeben.

HinweisHinweis

Ereignishandler sind nichts weiter als Methoden, die durch Delegaten aufgerufen werden.Weitere Informationen zur Verwendung von Delegaten in das Behandeln von Ereignissen finden Sie unter Ereignisse und Delegaten.

Um einen Delegaten zu erstellen:

Delegieren Sie Sub SampleDelegate (ByVal str As String)
Public delegate void SampleDelegate(string str);

Um einen Verweis auf eine Methode erstellen, die vom Delegaten angegebene Signatur entspricht:

Klasse SampleClass Methode, die der SampleDelegate Signatur übereinstimmt. Sub SampleSub (ByVal str As String) ' Hier Code hinzufügen. End Sub ' Methode, die der Delegat instanziiert. Sub SampleDelegateSub() Dim sd als SampleDelegate = AddressOf SampleSub sd ("Sample String") End Sub End Class
class SampleClass {/ / Methode, die die SampleDelegate Signatur übereinstimmt. public static void SampleMethod (String Message) {/ / hier Code hinzufügen. } / / Methode, die der Delegat instanziiert. void SampleDelegate() {SampleDelegate sd = SampleMethod; SD ("Sample String"); } }

Weitere Informationen finden Sie unter:

Siehe auch

Konzepte

C#-Programmierhandbuch

Weitere Ressourcen

Visual Basic-Programmierhandbuch