Share via


Vergleich der Schlüsselwörter in verschiedenen Sprachen

In diesem Thema werden allgemeine Programmieraufgaben aufgeführt, die mit einem Sprachschlüsselwort zusammengefasst werden können.Weitere Informationen zu Aufgaben, für die Codebeispiele benötigt werden, finden Sie unter Vergleich der Programmierkonzepte verschiedener Sprachen anhand von Codebeispielen.

Zweck

Visual Basic

C++

C#

F#

Deklarieren einer Variablen

Dim

Public

Friend

Protected

Private

Shared

Static1

Deklaratoren (Konzept, kein Schlüsselwort)

Deklaratoren (Schlüsselwörter beinhalten benutzerdefinierte und integrierte Typen)

let-Bindungen

Werte

Deklarieren einer benannten Konstante

Const

const

const

readonly

let-Bindungen

Werte

Erstellen einer neuen Instanz einer Klasse

Neu

new

ref new, gcnew (Komponentenerweiterungen für C++)

new

new

Erstellen eines neuen Objekts

Neu

CreateObject für COM-Objekte

CoCreateInstance() (für COM-Objekte)

new 

new

Zuweisen eines Objekts zu einer Objektvariablen

=

=

=

<-

Die Funktion/Methode gibt keinen Wert zurück

Sub2

void

void

Einheitentyp

Überladen einer Funktion oder Methode (bei Visual Basic: Überladen einer Prozedur oder Methode)

Overloads

(Zu diesem Zweck ist kein Sprachschlüsselwort erforderlich.)

(Zu diesem Zweck ist kein Sprachschlüsselwort erforderlich.)

override

Verweis auf das aktuelle Objekt

Me3

this

this

Verwenden Sie den Selbstbezeichner, wie unter Methoden oder Member beschrieben

Nichtvirtueller Aufruf einer virtuellen Methode des aktuellen Objekts

MyClass

MyClass::Func1(), wobei MyClass eine C+-Klasse mit einer Memberfunktion Func1 ist.

Nicht zutreffend

Nicht zutreffend

Zeichen aus einer Zeichenfolge abrufen

GetChar oder str(10), wo str eine Zeichenfolge ist

*(p + 10) oder p[10], wobei p char* oder wchar_t* entspricht

str[10], wobei str einer Zeichenfolge entspricht

string

str.Chars(10), wobei str einer Zeichenfolge entspricht

Zeichenfolgen

Deklarieren eines Verbunddatentyps (Struktur)

Struktur

Klasse

Schnittstelle

class

struct

union

__interface

struct

class

Schnittstelle

Klassen

Initialisieren eines Objekts (Konstruktor)

Sub New()4

Konstruktoren (Konzept, kein Schlüsselwort)

Konstruktoren oder Systemstandardtyp-Konstruktoren

Klassenkonstruktoren

Konstruktoren

Ein Objekt direkt abbrechen

Nicht zutreffend

~ClassName

Nicht zutreffend

Nicht zutreffend

Durch das System aufgerufene Methode unmittelbar bevor ein Objekt von der Garbage Collection5 zurückgefordert wird

Finalize (Class_Terminate in Visual Basic 6.0)

Destruktoren (C++) (Konzept, kein Schlüsselwort)

Destruktoren

Finalize

Garantie, dass nicht verwaltete Ressourcen nach Verwendung verworfen werden

Using

Nicht zutreffend

Verwenden

Ressourcenverwaltung

Initialisieren einer Variablen, wo sie deklariert ist

Dim x As Long = 5

Dim c As New Car(FuelTypeEnum.Gas)

// Initialisieren durch Wertzuweisung :

int x=5;

//mit einem geeigneten Konstruktor:

C c(10);

// Initialisieren durch Wertzuweisung :

int x = 123;

// oder verwenden eines Standardkonstruktors:

int x = new int();

let x = 123

Adresse einer Funktion übernehmen

AddressOf (Dieser Operator gibt einen Verweis auf eine Funktion in Form einer Delegatinstanz zurück)

delegate (Komponentenerweiterungen für C++)

Delegat

Funktionen

Rückruf

Übergeben Sie die Adresse einer Funktion an eine andere, die die aufrufende Instanz zurückruft.Ein entsprechendes Beispiel finden Sie unter Gewusst wie: Übergeben von Prozeduren an eine andere Prozedur in Visual Basic.

CALLBACK (ein Standardtyp)

callback (IDL-Attribut)

Delegat

Nicht zutreffend

Deklarieren, dass ein Objekt asynchron veränderbar ist

Nicht zutreffend

volatile

volatile

Nicht zutreffend

Die explizite Deklaration von Variablen erzwingen

Option Explicit

Nicht verfügbar (Alle Variablen müssen vor ihrer Verwendung deklariert werden.)

Nicht verfügbar (Alle Variablen müssen vor ihrer Verwendung deklariert werden.)

Nicht verfügbar (Alle Variablen müssen vor ihrer Verwendung deklariert werden.)

Lokalen Typrückschluss aktivieren

Option Infer

Der Typrückschluss ist automatisch aktiviert

Überprüfen auf eine Objektvariable, die nicht auf ein Objekt verweist

obj Is Nothing

pobj == NULL

obj == null

Verwenden eines Optionstyps in einem Vergleichsausdruck

Option

Übereinstimmung mit Ausdrücken

Wert einer Objektvariablen, die nicht auf ein Objekt verweist

Nothing

nullptr

null

NULL-Werte

Überprüfen auf NULL-Ausdruck einer Datenbank

IsDBNull

Nicht zutreffend

Nicht zutreffend

Nicht zutreffend

Überprüfen, ob eine Varianten-Variable initialisiert wurde

Nicht zutreffend

Nicht zutreffend

Nicht zutreffend

Nicht zutreffend

Definieren einer Standardeigenschaft

Standardwert

property:property das Schlüsselwort verweist auf verwalteten Code an

Indexer

Indizierte Eigenschaften

Objektorientierte Programmierung

Zweck

Visual Basic

C++

C#

F#

Verweis auf eine Basisklasse

MyBase

__super

base

base

Deklarieren einer Schnittstelle.

Schnittstelle

__interface

interface class (Komponentenerweiterungen für C++)

Schnittstelle

Schnittstelle

Angabe einer zu implementierenden Schnittstelle

Implements

(Nur von der Schnittstelle ableiten)

class C1 : public I1

class C1 : I1

Schnittstellen

Schnittstelle

Deklarieren einer Klasse

Klasse

class

Klassen und Strukturen (Komponentenerweiterungen für C++)

class

type

Deklarieren eines Moduls

Modul

static class

static class

Modul

Deklarieren einer partiellen Definition einer Klasse oder Struktur

Partial

Nicht zutreffend

Partial

Keine direkte Entsprechung.Siehe Typerweiterungen (F#).

Festlegen, dass eine Klasse nur vererbt werden kann.Es kann keine Instanz dieser Klasse erstellt werden.

MustInherit

abstract (Komponentenerweiterungen für C++)6

abstract

Abstrakte Klassen

Festlegen, dass eine Klasse nicht vererbt werden kann.

NotInheritable

sealed (Komponentenerweiterungen für C++)

sealed

SealedAttribute

Deklarieren eines Enumerationstyps

Enum

enum

enum

type

Deklarieren einer Klassenkonstanten

Const

const

const (wird bei einer Felddeklaration angewendet)

Werte sind standardmäßig unveränderlich (konstant).Siehe Werte (F#).

Ableiten einer Klasse von einer Basisklasse

Class C1 Inherits C2

Class C1 : public Base (Zu diesem Zweck ist kein Sprachschlüsselwort erforderlich)

class C1 : C2

class

inherit

Überschreiben einer Methode oder Eigenschaft

Overrides

(Zu diesem Zweck ist kein Sprachschüsselwort erforderlich, außer bei override (Komponentenerweiterungen für C++) für Kompilierungen mit /clr, siehe Abgeleitete Klassen)

override

override

Deklarieren einer Methode, die in eine abgeleitete Klasse implementiert werden muss

MustOverride

Setzen Sie = 0 an das Ende der Deklaration (rein virtuelle Methode)

abstract

abstract

Deklarieren einer Methode, die nicht überschrieben werden kann

NotOverridable (Methoden sind standardmäßig NotOverridable.)

sealed (Komponentenerweiterungen für C++)

sealed

Verwenden Sie das Sealed-Attribut.

Deklarieren einer virtuellen Methode oder Eigenschaft bzw. eines Eigenschaftenaccessors

Overridable

virtual

virtual

abstract, wie in Methods beschrieben.

Verbergen eines Basis­klassen­members in einer abgeleiteten Klasse

Shadowing

new (neuer Slot in vtable) (Komponentenerweiterungen für C++)

new

Eine virtuelle oder abstrakte Methode auszublenden, ist nicht erlaubt.

Deklarieren eines typsicheren Verweises zu einer Klassenmethode

Delegat

delegate (Komponentenerweiterungen für C++)

Delegat

myObj.myFunction, wobei myObj ein Objekt ist, und myMethod ist eine Methode, die für dieses Objekt verfügbar ist.

Festlegen, dass eine Variable ein Objekt enthalten kann, dessen Ereignisse verarbeitet werden sollen

WithEvents

Nicht zutreffend

(Code schreiben – kein angegebenes Schlüsselwort)

Nicht zutreffend

Ereignisse angeben, für die eine Ereignisprozedur aufgerufen werden soll

Handles (Ereignisprozeduren können einer WithEvents-Variablen weiterhin nach Namensmustern zugewiesen werden)

Nicht zutreffend

event + = eventHandler;

Nicht zutreffend

Einmalige Auswertung eines Objektausdrucks für den Zugriff auf verschiedene Member

With...End With

Nicht zutreffend

Nicht zutreffend

Nicht zutreffend

Ausnahmebehandlung

Zweck

Visual Basic

C++

C#

F#

Ausnahmebehandlung

Try...Catch...Finally...End Try

Throw

Strukturierte Ausnahmebehandlung:__try, __except

__finally

C++-Ausnahmebehandlung:

try, catch, throw

CLR-Ausnahmebehandlung:

Ausnahmebehandlung (Komponentenerweiterungen für C++)

try, catch, finally

throw

try

ersetzen durch

finally

Entscheidungsstrukturen

Zweck

Visual Basic

C++

C#

F#

Entscheidungsstruktur (Auswahl)

Auswählen...Case...End Select

switch, case, default

goto

break

switch, case

Standard

goto

break

Übereinstimmung mit Ausdrücken

Entscheidungsstruktur (if ....)anschließend)

If...Then...Else...End If

ElseIf

if, else

if, else

if...then...else

Schleifenstruktur (bedingt)

While...End While

Do...Loop

do, while

continue

do

while

continue

while...do

Schleifenstruktur (Iteration)

For...Next

For Each...Next

for

for

foreach

for...to

for...in

Arrays

Zweck

Visual Basic

C++

C#

F#

Deklarieren eines Arrays

Dim a() As Long

int x[5];

int[] x = new int[5];

let x = [| 1; 2; 3; 4; 5 |]

Arrays

Initialisieren eines Arrays

Dim a() As Long = {3, 4, 5}

int x[5]= {1,2,3,4,5};

int[] x = new int[5] {1, 2, 3, 4, 5};

let x = [| 1; 2; 3; 4; 5 |]

Arrays

Array neu zuordnen

Redim

Nicht zutreffend

Nicht zutreffend

Nicht zutreffend

Gültigkeitsbereich der Klasse

Zweck

Visual Basic

C++

C#

F#

Sichtbar außerhalb des Projekts oder der Assembly

Public

public

public

public

Nur innerhalb der Klasse sichtbar, in der er deklariert wurde

Friend

private

internal

internal

Nur innerhalb aktueller oder abgeleiteter Klassen sichtbar.

Protected

Nicht zutreffend

Protected

Nicht zutreffend

Der Zugriff ist auf die aktuelle Assembly oder die von der enthaltenden Klasse abgeleiteten Typen begrenzt.

Protected Friend

Typ- und Membersichtbarkeit

protected internal

Zugriffsebenen

Nicht zutreffend

Nur innerhalb des Projekts sichtbar (bei geschachtelten Klassen innerhalb der einschließenden Klasse)

Private

private

private

private

Memberbereich

Zweck

Visual Basic

C++

C#

F#

Zugriff außerhalb von Klassen, Projekten und Modulen möglich.

Public

public

public

public

Zugriff außerhalb der Klasse, aber innerhalb des Projekts oder Pakets möglich.

Friend

public private

internal

internal

Zugriff nur auf aktuelle und abgeleitete Klassen möglich.

Protected

protected

protected

Nicht zutreffend

Zugriff nur innerhalb von Klassen oder Modulen möglich.

Private

private

private

private

Festlegen, dass eine Funktion oder eine andere Klasse Zugriff auf private Member der deklarierenden Klasse hat

Nicht zutreffend

friend

Nicht zutreffend

Nicht zutreffend

Geschützt innerhalb der Assembly und privat für andere Assemblys

Nicht zutreffend

protected private

Nicht zutreffend

Nicht zutreffend

Der Zugriff ist auf die aktuelle Assembly oder die von der enthaltenden Klasse abgeleiteten Typen begrenzt.

Protected Friend

Typ- und Membersichtbarkeit

protected internal

Zugriffsebenen

Nicht zutreffend

Allgemeine Lebensdauer

Zweck

Visual Basic

C++

C#

F#

Beibehalten der lokalen Variablen der Prozedur

Static7

static

static

Nicht zutreffend

Gemeinsamer Zugriff durch alle Instanzen einer Klasse

Shared

static

static

static

Allgemeines

Zweck

Visual Basic

C++

C#

F#

Kommentar-Code

'

Rem

//, /* */ für mehrzeilige Kommentare

//, /* */ für mehrzeilige Kommentare

/// für XML-Kommentare

//, (* *) für mehrzeilige Kommentare

Unterscheidung nach Groß-/Kleinschreibung?

Nein

Ja

Ja

Ja

Aufruf von Windows-API

Declare <API>

Nicht zutreffend

Plattformaufruf verwenden

Verwenden Sie "Plattformaufruf".

Siehe Externe Funktionen (F#).

Deklarieren und Auslösen eines Ereignisses

Ereignis

RaiseEvent

Nicht zutreffend

Ereignis

Ereignisse

Threading primitives

SyncLock

Nicht zutreffend

lock

lock

Go to (Verzweigung)

Goto

goto

goto

Nicht zutreffend

1 In Visual Basic kann Static alleine nur innerhalb einer Prozedur zum Deklarieren einer Variablen, z. B. Static x As Long, verwendet werden.

2 In Visual Basic können Prozeduren, die mit dem Schlüsselwort Sub deklariert wurden, keine Werte zurückgeben.Bevor eine Prozedur einen Wert zurückgibt, muss sie mit dem Function-Schlüsselwort deklariert werden.

3 In Visual Basic wird Me zur Kompilierungszeit nicht aufgelöst. Dadurch kann es als Rückgabewert einer Eigenschaft oder Methode verwendet werden.

4 in Visual Basic werden Konstruktoren für die von .NET Framework System.Object abgeleiteten Klassen immer mit New benannt.

5 Normalerweise gibt der Code in einer solchen Methode Systemressourcen frei, die nicht automatisch durch Garbage Collector freigegeben werden.

6 In C++ beinhaltet eine abstrakte Klasse mindestens einen reinen virtuellen Member.

7 In Visual Basic werden statische lokale Variablen nicht freigegebener Klassenmethoden pro Klasseninstanz gespeichert und nicht wie in anderen Programmiersprachen als einzelne Kopie gemeinsam genutzt.Wird Static zum Deklarieren einer Variablen verwendet, wird der Wert dieser Variablen auch dann beibehalten, wenn der Gültigkeitsbereich der Variablen eingeschränkt und wieder erweitert wird.

Siehe auch

Referenz

Vergleich der Programmierkonzepte verschiedener Sprachen anhand von Codebeispielen

Operatorenvergleich in verschiedenen Sprachen

In verschiedenen Sprachen verglichene Datentypen

In zahlreichen Sprachen und Bibliotheken verglichene Steuerelemente und programmierbare Objekte

Weitere Ressourcen

Entsprechungen in verschiedenen Sprachen