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 |
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 |
#DEFINE |
|||
Erstellen einer neuen Instanz einer Klasse |
new |
NEWOBJECT( )-Funktion |
|||
Erstellen eines neuen Objekts |
CreateObject() für COM-Objekte |
CoCreateInstance() (für COM-Objekte) |
Neues ActiveXObject() |
CREATEOBJECT( )-Funktion |
|
Zuweisen eines Objekts zu einer Objektvariablen |
= |
= |
= |
= STORE |
|
Die Funktion/Methode gibt keinen Wert zurück |
Sub2 |
void |
Void (nur COM-Server) |
||
Überladen einer Funktion oder Methode (bei Visual Basic: Überladen einer Prozedur oder Methode) |
(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 thisform |
||
Nichtvirtueller Aufruf einer virtuellen Methode des aktuellen Objekts |
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 |
*(p + 10) oder p[10], wobei p char* oder wchar_t* entspricht |
str[10], wobei str einer Zeichenfolge entspricht |
str[10], wobei str einer string entspricht. charAt substring substr |
SUBSTR( ) |
|
Deklarieren eines Verbunddatentyps (Struktur) |
class, interface |
nicht verfügbar |
|||
Initialisieren eines Objekts (Konstruktor) |
Konstruktoren (Konzept, kein Schlüsselwort) |
Konstruktoren oder Systemstandardtyp-Konstruktoren |
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) |
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) |
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) |
nicht verfügbar |
nicht verfügbar |
|
Deklarieren, dass ein Objekt asynchron veränderbar ist |
nicht verfügbar |
nicht verfügbar |
nicht verfügbar |
||
Die explizite Deklaration von Variablen erzwingen |
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 |
|||||
Überprüfen auf eine Objektvariable, die nicht auf ein Objekt verweist |
pobj == NULL |
obj == null |
obj == undefined obj == null |
VARTYPE(obj)=="0" |
|
Wert einer Objektvariablen, die nicht auf ein Objekt verweist |
nullptr |
null undefined |
.F. |
||
Überprüfen auf NULL-Ausdruck einer Datenbank |
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 |
property: das property Schlüsselwort verweist auf verwalteten Code |
nicht verfügbar |
nicht verfügbar |
Objektorientierte Programmierung
Zweck |
Visual Basic |
C++ |
C# |
JScript |
Visual FoxPro |
---|---|---|---|---|---|
Verweis auf eine Basisklasse |
super |
BaseClass-Eigenschaft ParentClass-Eigenschaft DODEFAULT() Class::member |
|||
Deklarieren einer Schnittstelle. |
interface |
DEFINE CLASS |
|||
Angabe einer zu implementierenden Schnittstelle |
(Nur von der Schnittstelle ableiten) class C1 : public I1 |
class C1 : I1 Schnittstellen |
IMPLEMENTS |
IMPLEMENTS NEU |
|
Deklarieren einer Klasse |
class |
DEFINE CLASSMyClassAS <ParentClass> |
|||
Deklarieren eines Moduls |
static class |
static class |
nicht verfügbar |
nicht verfügbar |
|
Deklarieren einer partiellen Definition einer Klasse oder Struktur |
nicht verfügbar |
nicht verfügbar |
nicht verfügbar |
||
Festlegen, dass eine Klasse nur vererbt werden kann. Es kann keine Instanz dieser Klasse erstellt werden. |
abstract |
nicht verfügbar |
|||
Festlegen, dass eine Klasse nicht vererbt werden kann. |
final |
nicht verfügbar |
|||
Deklarieren eines Enumerationstyps |
enum |
nicht verfügbar |
|||
Deklarieren einer Klassenkonstanten |
const (wird bei einer Felddeklaration angewendet) |
const |
#DEFINE |
||
Ableiten einer Klasse von einer Basisklasse |
Class C1 : public Base (Zu diesem Zweck ist kein Sprachschlüsselwort erforderlich) |
class C1 : C2 |
Class c1 extends c2 |
DEFINE CLASS MyClass AS ParentClass |
|
Überschreiben einer Methode oder Eigenschaft |
(Zu diesem Zweck ist kein Sprachschüsselwort erforderlich, außer bei override für Kompilierungen mit /clr, siehe Derived Classes) |
(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 |
Setzen Sie = 0 an das Ende der Deklaration (rein virtuelle Methode) |
abstract |
(Zu diesem Zweck ist kein Sprachschlüsselwort erforderlich.) |
||
Deklarieren einer Methode, die nicht überschrieben werden kann |
NotOverridable (Methoden sind standardmäßig NotOverridable.) |
final |
nicht verfügbar |
||
Deklarieren einer virtuellen Methode oder Eigenschaft bzw. eines Eigenschaftenaccessors |
(Methoden sind standardmäßig virtuell) |
nicht verfügbar |
|||
Verbergen eines Basisklassenmembers in einer abgeleiteten Klasse |
nicht verfügbar |
||||
Deklarieren eines typsicheren Verweises zu einer Klassenmethode |
Verwenden Sie den Namen der Funktion ohne Klammern. |
nicht verfügbar |
|||
Festlegen, dass eine Variable ein Objekt enthalten kann, dessen Ereignisse verarbeitet werden sollen |
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 |
nicht verfügbar |
mit9 |
WITH ... ENDWITH |
Ausnahmebehandlung
Zweck |
Visual Basic |
C++ |
C# |
JScript |
Visual FoxPro |
---|---|---|---|---|---|
Strukturierte Ausnahmebehandlung |
try catch finally throw |
TRY [ tryCommands ] [ CATCH [ To VarName ] [ WHEN IExpression ] ] [ catchCommands ] ] [ THROW [ eUserExpression ] ] [ EXIT ] [ FINALLY [ finallyCommands ] ] ENDTRY |
|||
C++-Ausnahmebehandlung |
nicht verfügbar |
nicht verfügbar |
nicht verfügbar |
nicht verfügbar |
Entscheidungsstrukturen
Zweck |
Visual Basic |
C++ |
C# |
JScript |
Visual FoxPro |
---|---|---|---|---|---|
Entscheidungsstruktur (Auswahl) |
case |
switch case break |
CASE ICASE |
||
Entscheidungsstruktur (wenn...dann) |
if else |
IF ... ENDIF IIF( ) |
|||
Schleifenstruktur (bedingt) |
do, while break, continue |
DO, WHILE (Klauseln) |
|||
Schleifenstruktur (Iteration) |
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 |
int[] x = new int[5]; |
var x : int[] var arr = Array() |
DIMENSION DECLARE |
||
Initialisieren eines Arrays |
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 |
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 |
nicht verfügbar |
|||
Nur innerhalb der Klasse sichtbar, in der er deklariert wurde |
internal |
nicht verfügbar |
|||
Nur innerhalb aktueller oder abgeleiteter Klassen sichtbar. |
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 internal |
nicht verfügbar |
nicht verfügbar |
||
Nur innerhalb des Projekts sichtbar (bei geschachtelten Klassen innerhalb der einschließenden Klasse) |
private |
nicht verfügbar |
Memberbereich
Zweck |
Visual Basic |
C++ |
C# |
JScript |
Visual FoxPro |
---|---|---|---|---|---|
Zugriff außerhalb von Klassen, Projekten und Modulen möglich. |
public |
(Zu diesem Zweck ist kein Sprachschlüsselwort erforderlich.) |
|||
Zugriff außerhalb der Klasse, aber innerhalb des Projekts oder Pakets möglich. |
public private: |
internal |
nicht verfügbar |
||
Zugriff nur auf aktuelle und abgeleitete Klassen möglich. |
protected |
PROTECTED |
|||
Zugriff nur innerhalb von Klassen oder Modulen möglich. |
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 internal |
nicht verfügbar |
nicht verfügbar |
Allgemeine Lebensdauer
Zweck |
Visual Basic |
C++ |
C# |
JScript |
Visual FoxPro |
---|---|---|---|---|---|
Beibehalten der lokalen Variablen der Prozedur |
Static11 |
nicht verfügbar |
nicht verfügbar |
||
Gemeinsamer Zugriff durch alle Instanzen einer Klasse |
static |
nicht verfügbar |
Allgemeines
Zweck |
Visual Basic |
C++ |
C# |
JScript |
Visual FoxPro |
---|---|---|---|---|---|
Kommentar-Code |
//, /* */ für mehrzeilige Kommentare |
* && HINWEIS |
|||
Unterscheidung nach Groß-/Kleinschreibung? |
Nein |
Ja |
Ja |
Ja |
Nein |
Aufruf von Windows-API |
nicht verfügbar |
nicht verfügbar |
DECLARE - DLL |
||
Deklarieren und Auslösen eines Ereignisses |
nicht verfügbar |
nicht verfügbar |
RAISEEVENT( )-Funktion |
||
Threading primitives |
nicht verfügbar |
nicht verfügbar |
nicht verfügbar |
||
Go to (Verzweigung) |
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