Vergleich der Schlüsselwörter in verschiedenen Sprachen

Aktualisiert: November 2007

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#

JScript

Visual FoxPro

Deklarieren einer Variablen

Dim-Anweisung (Visual Basic)

Public (Visual Basic)

Friend (Visual Basic)

Protected (Visual Basic)

Private (Visual Basic)

Shared (Visual Basic)

Static (Visual Basic)1

Deklaratoren (Konzept, kein Schlüsselwort)

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

var

[implizite Deklaration]

PUBLIC

LOCAL

PRIVATE

Deklarieren einer benannten Konstante

Const

const

const

readonly

const

#DEFINE

Erstellen einer neuen Instanz einer Klasse

New

new

gcnew

new

new

NEWOBJECT( )-Funktion

Erstellen eines neuen Objekts

New (Visual Basic)

CreateObject() für COM-Objekte

CoCreateInstance() (für COM-Objekte)

new 

Neues ActiveXObject()

CREATEOBJECT( )-Funktion

Zuweisen eines Objekts zu einer Objektvariablen

=

=

=

=

=

STORE

Die Funktion/Methode gibt keinen Wert zurück

Sub2

void

void

void

Void (nur COM-Server)

Ü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.)

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

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

Verweis auf das aktuelle Objekt

Me3

this

this

this

this

thisform

Nichtvirtueller Aufruf einer virtuellen Methode des aktuellen Objekts

MyClass

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

nicht verfügbar

nicht verfügbar

nicht verfügbar

Zeichen aus einer Zeichenfolge abrufen

GetChar-Funktion

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

str[10], wobei str einer Zeichenfolge entspricht

string4

str[10], wobei str einer string entspricht.

charAt

substring

substr

SUBSTR( )

Deklarieren eines Verbunddatentyps (Struktur)

Structure

class

struct

union

__interface

struct

class

interface

class, interface

nicht verfügbar

Initialisieren eines Objekts (Konstruktor)

Sub New()5

Konstruktoren (Konzept, kein Schlüsselwort)

Konstruktoren oder Systemstandardtyp-Konstruktoren

Klassenkonstruktoren

Konstruktor (Konzept, kein Schlüsselwort)6

Init-Ereignis

Ein Objekt direkt abbrechen

nicht verfügbar

~ClassName

nicht verfügbar

nicht verfügbar

nicht verfügbar

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

Finalize (Class_Terminate in Visual Basic 6.0)

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

Destruktoren

nicht verfügbar

Destroy-Ereignis

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();

var x = 5

var y : car = new car()

LOCAL x

x = 5

Adresse einer Funktion übernehmen

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

delegate

delegate

Verwenden Sie den Namen der Funktion ohne Klammern.

nicht verfügbar

Rückruf

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

CALLBACK (ein Standardtyp)

callback (IDL-Attribut)

delegate

nicht verfügbar

nicht verfügbar

Deklarieren, dass ein Objekt asynchron veränderbar ist

nicht verfügbar

volatile

volatile

nicht verfügbar

nicht verfügbar

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.)

fast-Modus (standardmäßig aktiviert)

_VFP.LanguageOptions NEU 

Lokalen Typrückschluss aktivieren

Option Infer

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

obj Is Nothing

pobj == NULL

obj == null

obj == undefined

obj == null

VARTYPE(obj)=="0"

Wert einer Objektvariablen, die nicht auf ein Objekt verweist

Nothing

nullptr

null

null

undefined

.F.

Überprüfen auf NULL-Ausdruck einer Datenbank

IsDbNull

nicht verfügbar

nicht verfügbar

x == null

ISNULL( )

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

nicht verfügbar

nicht verfügbar

nicht verfügbar

x == undefined

EMPTY( )

Definieren einer Standardeigenschaft

Default

property: das property Schlüsselwort verweist auf verwalteten Code

Indexer

nicht verfügbar

nicht verfügbar

Objektorientierte Programmierung

Zweck

Visual Basic

C++

C#

JScript

Visual FoxPro

Verweis auf eine Basisklasse

MyBase

__super

base

super

BaseClass-Eigenschaft

ParentClass-Eigenschaft

DODEFAULT()

Class::member

Deklarieren einer Schnittstelle.

Interface

__interface

interface class

interface

interface

DEFINE CLASS

Angabe einer zu implementierenden Schnittstelle

Implements

(Nur von der Schnittstelle ableiten)

class C1 : public I1

class C1 : I1

Schnittstellen

IMPLEMENTS

IMPLEMENTS NEU 

Deklarieren einer Klasse

Class

class

Classes and Structs (Managed)

class

class

DEFINE CLASSMyClassAS <ParentClass>

Deklarieren eines Moduls

Module

static class

static class

nicht verfügbar

nicht verfügbar

Deklarieren einer partiellen Definition einer Klasse oder Struktur

Partial

nicht verfügbar

Partial

nicht verfügbar

nicht verfügbar

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

MustInherit

abstract (Visual C++)8

abstract

abstract

nicht verfügbar

Festlegen, dass eine Klasse nicht vererbt werden kann.

NotInheritable

sealed

sealed

final

nicht verfügbar

Deklarieren eines Enumerationstyps

Enum

enum

enum

enum

nicht verfügbar

Deklarieren einer Klassenkonstanten

Const

const

const (wird bei einer Felddeklaration angewendet)

const

#DEFINE

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

Class c1 extends c2

DEFINE CLASS MyClass AS ParentClass

Überschreiben einer Methode oder Eigenschaft

Overrides

(Zu diesem Zweck ist kein Sprachschüsselwort erforderlich, außer bei override für Kompilierungen mit /clr, siehe Derived Classes)

override

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

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

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

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

Deklarieren einer Methode, die nicht überschrieben werden kann

NotOverridable (Methoden sind standardmäßig NotOverridable.)

sealed

sealed

final

nicht verfügbar

Deklarieren einer virtuellen Methode oder Eigenschaft bzw. eines Eigenschaftenaccessors

Overridable

virtual

virtual

(Methoden sind standardmäßig virtuell)

nicht verfügbar

Verbergen eines Basis­klassen­members in einer abgeleiteten Klasse

Shadowing

new (new slot in vtable)

new (C#-Referenz)

new-Modifizierer

nicht verfügbar

Deklarieren eines typsicheren Verweises zu einer Klassenmethode

Delegate

delegate

delegate

Verwenden Sie den Namen der Funktion ohne Klammern.

nicht verfügbar

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

WithEvents

nicht verfügbar

(Code schreiben – kein angegebenes Schlüsselwort)

(Code schreiben – kein angegebenes Schlüsselwort)

EVENTHANDLER( )  NEU 

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

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

nicht verfügbar

event + = eventHandler;

nicht verfügbar

BINDEVENTS( )

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

With... End With

nicht verfügbar

using-Anweisung (C#-Referenz)

mit9

WITH ... ENDWITH

Ausnahmebehandlung

Zweck

Visual Basic

C++

C#

JScript

Visual FoxPro

Strukturierte Ausnahmebehandlung

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

Throw

__try, __except

__finally

try, catch, finally

throw

try

catch

finally

throw

TRY

   [ tryCommands ]

[ CATCH [ To VarName ] [ WHEN IExpression ] ]

   [ catchCommands ] ]

[ THROW [ eUserExpression ] ]

[ EXIT ]

[ FINALLY

   [ finallyCommands ] ]

ENDTRY

C++-Ausnahmebehandlung

nicht verfügbar

try, catch, throw

nicht verfügbar

nicht verfügbar

nicht verfügbar

Entscheidungsstrukturen

Zweck

Visual Basic

C++

C#

JScript

Visual FoxPro

Entscheidungsstruktur (Auswahl)

Select... Case... End Select

switch, case, default

goto

break

switch

case

default

goto

break

switch

case

break

CASE

ICASE

Entscheidungsstruktur (wenn...dann)

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

ElseIf

if, else

if, else

if

else

IF ... ENDIF

IIF( )

Schleifenstruktur (bedingt)

While... End While

Do...Loop

do, while

continue

do

while

continue

do, while

break, continue

DO, WHILE (Klauseln)

Schleifenstruktur (Iteration)

For... Next

For Each... Next

for

for

foreach

for (x=0;x<10;x++){...}

for (prop in obj) { print (obj[prop]);}

FOR (Klauseln)

FOR ... ENDFOR

Continue

NEXT

FOR EACH (Klauseln),FOR ... ENDFOR, Continue, Next

Arrays

Zweck

Visual Basic

C++

C#

JScript

Visual FoxPro

Deklarieren eines Arrays

Dim a() As Long

int x[5];

int[] x = new int[5];

var x : int[]

var arr = Array()

DIMENSION

DECLARE

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};

var x : int[] = [1, 2, 3, 4, 5]

var arr = new Array(1, 2, 3, 4, 5)]

x[1] = 1

x[2] = 2

Array neu zuordnen

Redim

nicht verfügbar

nicht verfügbar

arr.length=newSize (nur für JScript-Arrays)10

DIMENSION

DECLARE

Gültigkeitsbereich der Klasse

Zweck

Visual Basic

C++

C#

JScript

Visual FoxPro

Sichtbar außerhalb des Projekts oder der Assembly

Public

public

public

public

nicht verfügbar

Nur innerhalb der Klasse sichtbar, in der er deklariert wurde

Friend

private

internal

internal

nicht verfügbar

Nur innerhalb aktueller oder abgeleiteter Klassen sichtbar.

Protected

nicht verfügbar

Protected

nicht verfügbar

nicht verfügbar

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

Protected Friend

Type and Member Visibility

protected internal

Zugriffsebenen

nicht verfügbar

nicht verfügbar

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

Private

private

private

private

nicht verfügbar

Memberbereich

Zweck

Visual Basic

C++

C#

JScript

Visual FoxPro

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

Public

public

public

public

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

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

Friend

public private:

internal

internal

nicht verfügbar

Zugriff nur auf aktuelle und abgeleitete Klassen möglich.

Protected

protected

protected

protected

PROTECTED

Zugriff nur innerhalb von Klassen oder Modulen möglich.

Private

private

private

private

HIDDEN

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

nicht verfügbar

friend (in C++ nicht zulässig)

friend

nicht verfügbar

nicht verfügbar

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

nicht verfügbar

protected private

nicht verfügbar

nicht verfügbar

nicht verfügbar

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

Protected Friend

Type and Member Visibility

protected internal

Zugriffsebenen

nicht verfügbar

nicht verfügbar

Allgemeine Lebensdauer

Zweck

Visual Basic

C++

C#

JScript

Visual FoxPro

Beibehalten der lokalen Variablen der Prozedur

Static11

static

static (C#-Referenz)

nicht verfügbar

nicht verfügbar

Gemeinsamer Zugriff durch alle Instanzen einer Klasse

Shared

static

static

static

nicht verfügbar

Allgemeines

Zweck

Visual Basic

C++

C#

JScript

Visual FoxPro

Kommentar-Code

'

Rem

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

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

/// für XML-Kommentare

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

*

&&

HINWEIS

Unterscheidung nach Groß-/Kleinschreibung?

Nein

Ja

Ja

Ja

Nein

Aufruf von Windows-API

Declare <API>

nicht verfügbar

Plattformaufruf verwenden

nicht verfügbar

DECLARE - DLL

Deklarieren und Auslösen eines Ereignisses

Event

RaiseEvent

nicht verfügbar

event

nicht verfügbar

RAISEEVENT( )-Funktion

Threading primitives

SyncLock

nicht verfügbar

lock

nicht verfügbar

nicht verfügbar

Go to (Verzweigung)

Goto

goto

goto

nicht verfügbar

nicht verfügbar

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 JScript wird die substr-Funktion zwar noch unterstützt, stellt jedoch nicht mehr die bevorzugte Art des Zugriffs auf Zeichen innerhalb einer Zeichenfolge dar. Die effizienteste Art, auf Zeichen an einer bestimmten Stelle in einer Zeichenfolge zuzugreifen, ist die Verwendung von Klammern. Um auf das 10. Zeichen in der Zeichenfolge str zuzugreifen, verwenden Sie beispielsweise str[10].

5 in Visual Basic werden Konstruktoren für die von .NET FrameworkSystem.Object abgeleiteten Klassen immer mit New benannt.

6 In JScript ist das Überladen von Konstruktoren nicht zulässig.

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

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

9 In JScript wird im Gegensatz zu Visual Basic nicht mit einem Punkt begonnen. Dieses Feature kann leicht Verwirrung stiften, da Variablen u. U. für Eigenschaften gehalten werden und umgekehrt. Beachten Sie auch, dass die with-Anweisung zu langsamen Code führt.

10 In JScript wird das Array dadurch weder neu zugeordnet noch erweitert. JScript-Arrays (deklariert als Array-Typ) sind immer dynamisch, und nur die definierten Variablen belegen Speicherplatz. Systemeigene (als System.Array oder type[] deklarierte) Arrays sind nicht dynamisch.

11 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

Vergleich der Operatoren in verschiedenen Sprachen

Vergleich der Datentypen in verschiedenen Sprachen

Vergleich der Steuerelemente und programmierbaren Objekte in verschiedenen Sprachen und Bibliotheken

Weitere Ressourcen

Übereinstimmungen in verschiedenen Sprachen

Visual J#