Comparaison des mots clés dans différents langages
Mise à jour : novembre 2007
Cette rubrique répertorie les tâches de programmation courantes qui peuvent être résumées avec un mot clé. Pour plus d'informations sur les tâches qui nécessitent des exemples de code, consultez Comparaison des concepts de programmation dans différents langages avec des exemples de code.
But |
Visual Basic |
C++ |
C# |
JScript |
Visual FoxPro |
---|---|---|---|---|---|
Déclarer une variable |
déclarateurs (concept, et non mot clé) |
déclarateurs (les mots clés incluent des types définis par l'utilisateur et des types intégrés) |
var |
[déclaration implicite] PUBLIC LOCAL PRIVATE |
|
Déclarer une constante nommée |
const |
#DEFINE |
|||
Crée une instance de la classe. |
new |
Fonction NEWOBJECT( ) |
|||
Créer un nouvel objet |
CreateObject() pour les objets COM |
CoCreateInstance() (pour les objets COM) |
nouveau ActiveXObject() |
Fonction CREATEOBJECT( ) |
|
Assigner un objet à une variable objet |
= |
= |
= |
= STORE |
|
La fonction/méthode ne retourne pas de valeur |
Sub2 |
void |
Void (serveurs COM uniquement) |
||
Surcharger une fonction ou une méthode (en Visual Basic : surcharger une procédure ou une méthode) |
(Aucun mot clé du langage n'est requis à cet effet) |
(Aucun mot clé du langage n'est requis à cet effet) |
(Aucun mot clé du langage n'est requis à cet effet) |
(Aucun mot clé du langage n'est requis à cet effet) |
|
Faire référence à l'objet en cours |
Me3 |
this |
this thisform |
||
Effectuer un appel non virtuel à une méthode virtuelle de l'objet en cours |
MyClass::Func1(), où MyClass est une classe C++ ayant une fonction membre Func1. |
N/A |
N/A |
N/A |
|
Récupérer un caractère d'une chaîne |
*(p + 10) ou p[10] où p représente un char* ou wchar_t* |
str[10] où str représente une chaîne |
str[10], où str est une string charAt substring substr |
SUBSTR( ) |
|
Déclarer un type de données composé (structure) |
class, interface |
N/A |
|||
Initialiser un objet (constructeur) |
constructeurs (concept, et non mot clé) |
Constructeurs, ou constructeurs de type par défaut du système |
Constructeur (le concept, pas le mot clé)6 |
Événement Init |
|
Terminer un objet directement |
N/A |
~NomClasse |
N/A |
N/A |
N/A |
Une méthode appelée par le système juste avant une opération garbage collection récupère un objet7 |
Finalize (dans Visual Basic 6.0, Class_Terminate) |
Destructors (C++) (le concept, pas le mot clé) |
N/A |
Événement Destroy |
|
Initialiser une variable à l'endroit où elle est déclarée |
Dim x As Long = 5 Dim c As New Car(FuelTypeEnum.Gas) |
// initialise à une valeur : int x=5; //avec un constructeur approprié : C c(10); |
// initialise à une valeur : int x = 123; // ou utilise le constructeur par défaut : int x = new int(); |
var x = 5 var y : car = new car() |
LOCAL x x = 5 |
Prendre l'adresse d'une fonction |
AddressOf (Cet opérateur retourne la référence à une fonction sous la forme d'une instance de délégué) |
Utilisez le nom de la fonction sans les parenthèses |
N/A |
||
Rappel |
Passez l'adresse d'une fonction à une autre qui rappelle la méthode appelante. Pour obtenir un exemple, consultez Comment : passer des procédures à une autre procédure en Visual Basic. |
CALLBACK (un type standard) callback (attribut IDL) |
N/A |
N/A |
|
Déclarer qu'un objet peut être modifié de manière asynchrone. |
N/A |
N/A |
N/A |
||
Forcer une déclaration explicite de variables |
N/A (Toutes les variables doivent être déclarées avant d'être utilisées.) |
N/A (Toutes les variables doivent être déclarées avant d'être utilisées.) |
mode fast (activé par défaut) |
_VFP.LanguageOptions NOUVEAU |
|
Activer l'inférence de type de variable locale. |
|||||
Tester une variable objet ne faisant pas référence à un objet |
pobj == NULL |
obj == null |
obj == undefined obj == null |
VARTYPE(obj)=="0" |
|
Valeur d'une variable objet ne faisant pas référence à un objet |
nullptr |
null undefined |
.F. |
||
Tester une expression de base de données null |
N/A |
N/A |
x == null |
ISNULL( ) |
|
Tester si une variable Variant a été initialisée |
N/A |
N/A |
N/A |
x == undefined |
EMPTY( ) |
Définir une propriété par défaut |
property : le mot clé property fait référence au code managé |
N/A |
N/A |
Programmation orientée objet
But |
Visual Basic |
C++ |
C# |
JScript |
Visual FoxPro |
---|---|---|---|---|---|
Faire référence à une classe de base |
super |
Propriété BaseClass Propriété ParentClass DODEFAULT() Classe::membre |
|||
Déclarer une interface |
interface |
DEFINE CLASS |
|||
Spécifier une interface à implémenter |
(Est simplement dérivé de l'interface) class C1 : public I1 |
class C1 : I1 Interfaces |
IMPLEMENTS |
IMPLEMENTS NOUVEAU |
|
Déclarer une classe |
class |
DEFINE CLASSMyClassAS <ClasseParente> |
|||
Déclarer un module |
static class |
static class |
N/A |
N/A |
|
Déclarer la définition partielle d'une classe ou d'une structure |
N/A |
N/A |
N/A |
||
Spécifier qu'une classe peut uniquement être héritée. Il est impossible de créer une instance de la classe. |
abstract |
N/A |
|||
Spécifier qu'une classe ne peut pas être héritée. |
final |
N/A |
|||
Déclarer un type énuméré |
enum |
N/A |
|||
Déclarer une constante de classe |
const (appliqué à une déclaration de champ) |
const |
#DEFINE |
||
Dériver une classe d'une classe de base |
Class C1 : public Base (Aucun mot clé du langage n'est requis à cet effet) |
class C1 : C2 |
Class c1 étend c2 |
DEFINE CLASSMyClass AS ClasseParente |
|
Substituer une méthode ou une propriété |
(Aucun mot clé du langage requis à cet effet, sauf override pour les compilations /clr - consultez Derived Classes) |
(Aucun mot clé du langage n'est requis à cet effet) |
(Aucun mot clé du langage n'est requis à cet effet) |
||
Déclarer une méthode qui doit être implémentée dans une classe dérivée |
Placez = 0 à la fin de la déclaration (méthode virtuelle pure) |
abstract |
(Aucun mot clé du langage n'est requis à cet effet) |
||
Déclarer une méthode qui ne peut pas être substituée |
NotOverridable (Les méthodes sont NotOverridable par défaut.) |
final |
N/A |
||
Déclarer une méthode virtuelle ou une propriété, ou un accesseur de propriété |
(Par défaut, les méthodes sont virtuelles) |
N/A |
|||
Masque un membre de la classe de base dans une classe dérivée |
N/A |
||||
Déclarer une référence de type sécurisé à une méthode de classe |
Utilisez le nom de la fonction sans les parenthèses |
N/A |
|||
Spécifier qu'une variable peut contenir un objet dont vous souhaitez gérer les événements |
N/A |
(Écrivez du code - aucun mot clé spécifique) |
(Écrivez du code - aucun mot clé spécifique) |
EVENTHANDLER( ) NOUVEAU |
|
Spécifier les événements pour lesquels une procédure événementielle sera appelée |
Handles (les procédures événementielles peuvent toujours être associées à une variable WithEvents par modèle d'affectation de noms) |
N/A |
event += eventHandler; |
N/A |
BINDEVENTS( ) |
Évaluer une expression d'objet une fois, afin d'accéder à plusieurs membres |
N/A |
avec9 |
WITH ... ENDWITH |
Gestion des exceptions
But |
Visual Basic |
C++ |
C# |
JScript |
Visual FoxPro |
---|---|---|---|---|---|
Gestion structurée des exceptions |
try catch finally throw |
TRY [ tryCommands ] [ CATCH [ To VarName ] [ WHEN IExpression ] ] [ catchCommands ] ] [ THROW [ eUserExpression ] ] [ EXIT ] [ FINALLY [ finallyCommands ] ] ENDTRY |
|||
Gestion des exceptions C++ |
N/A |
N/A |
N/A |
N/A |
Structures de décision
But |
Visual Basic |
C++ |
C# |
JScript |
Visual FoxPro |
---|---|---|---|---|---|
Structure de la décision (sélection) |
case |
switch case break |
CASE ICASE |
||
Structure de la décision (if … then) |
if else |
IF ... ENDIF IIF( ) |
|||
Structure de boucle (conditionnelle) |
do, while break, continue |
DO, WHILE (clauses) |
|||
Structure de boucle (itération) |
for (x=0;x<10;x++){...} for (prop in obj) { print (obj[prop]);} |
FOR (clauses) FOR ... ENDFOR Continue NEXT FOR EACH (clauses), FOR ... ENDFOR, Continue, Next |
Tableaux
But |
Visual Basic |
C++ |
C# |
JScript |
Visual FoxPro |
---|---|---|---|---|---|
Déclarer un tableau |
int[] x = new int[5]; |
var x: int [] var arr = Array() |
DIMENSION DECLARE |
||
Initialiser un tableau |
var x : int[] = [1, 2, 3, 4, 5] var arr = new Array(1, 2, 3, 4, 5)] |
x[1] = 1 x[2] = 2 |
|||
Réallouer un tableau |
N/A |
N/A |
arr.length=newSize (uniquement pour les tableaux JScript)10 |
DIMENSION DECLARE |
Portée de classe
But |
Visual Basic |
C++ |
C# |
JScript |
Visual FoxPro |
---|---|---|---|---|---|
Visible en dehors du projet ou de l'assembly |
public |
N/A |
|||
Visible uniquement dans l'assembly dans lequel elle est déclarée. |
internal |
N/A |
|||
Visible uniquement dans les classes courantes ou dérivées |
N/A |
N/A |
N/A |
||
L'accès est restreint à l'assembly en cours ou aux types dérivés de la classe conteneur. |
protected internal |
N/A |
N/A |
||
Visible uniquement dans le projet (pour les classes imbriquées, dans la classe englobante) |
private |
N/A |
Portée des membres
But |
Visual Basic |
C++ |
C# |
JScript |
Visual FoxPro |
---|---|---|---|---|---|
Accessible à l'extérieur d'une classe, d'un projet et d'un module |
public |
(Aucun mot clé du langage n'est requis à cet effet) |
|||
Accessible à l'extérieur de la classe, mais dans le projet ou le package |
public private: |
internal |
N/A |
||
Accessible uniquement aux classes en cours et dérivées |
protected |
PROTECTED |
|||
Uniquement accessible dans une classe ou un module |
private |
HIDDEN |
|||
Spécifier qu'une fonction ou une autre classe peut accéder aux membres privés de la classe de déclaration |
N/A |
friend (non autorisé en C++) |
friend |
N/A |
N/A |
Protégé à l'intérieur de l'assembly et exclusivité des autres assemblys |
N/A |
protected private |
N/A |
N/A |
N/A |
L'accès est restreint à l'assembly en cours ou aux types dérivés de la classe conteneur. |
protected internal |
N/A |
N/A |
Durée de vie diverse
But |
Visual Basic |
C++ |
C# |
JScript |
Visual FoxPro |
---|---|---|---|---|---|
Conserver les variables locales de la procédure |
Static11 |
N/A |
N/A |
||
Partagé par toutes les instances d'une classe |
static |
N/A |
Divers
But |
Visual Basic |
C++ |
C# |
JScript |
Visual FoxPro |
---|---|---|---|---|---|
Commenter le code |
//, /* */ pour les commentaires multilignes |
* && REMARQUE |
|||
Respect de la casse ? |
Non |
Oui |
Oui |
Oui |
Non |
Appeler une API Windows |
N/A |
N/A |
DECLARE - DLL |
||
Déclarer et déclencher un événement |
N/A |
N/A |
Fonction RAISEEVENT( ) |
||
Primitives de thread |
N/A |
N/A |
N/A |
||
Aller à (branche) |
N/A |
N/A |
1 Dans Visual Basic, vous ne pouvez utiliser Static seul pour déclarer une variable (Static x As Long, par exemple) que dans une procédure.
2 Dans Visual Basic, les procédures déclarées avec le mot clé Sub ne peuvent pas retourner de valeurs. Si une procédure doit retourner une valeur, vous devez la déclarer avec le mot clé Function.
3 Dans Visual Basic, Me n'est pas résolu au moment de la compilation. Vous pouvez donc l'utiliser comme valeur de retour d'une propriété ou d'une méthode.
4 En JScript, la substr est toujours prise en charge, mais ne constitue plus la meilleure façon d'accéder aux caractères d'une chaîne. L'utilisation de parenthèses constitue la façon la plus efficace d'accéder à un caractère depuis un emplacement particulier d'une chaîne. Par exemple, pour atteindre le dixième caractère de la chaîne str, utilisez str[10].
5 Dans Visual Basic, les constructeurs des classes dérivées du System.Object du .NET Framework sont toujours nommés New.
6 En JScript, la surcharge n'est pas autorisée sur les constructeurs.
7 En général, le code de cette méthode libère des ressources système qui ne seraient pas automatiquement libérées par le garbage collector.
8 En C++, une classe abstraite comprend au moins un membre virtuel pur.
9 Dans JScript, il n'est pas possible de commencer par un point comme c'est le cas dans Visual Basic. Cette fonctionnalité peut facilement créer une confusion, car les variables peuvent être prises, à tort, pour des propriétés, et vice versa. Notez également que l'instruction with ralentit le code.
10 En JScript, cela ne réalloue pas le tableau, et n'augmente pas non plus sa taille. Les tableaux JScript (déclarés de type Array) sont toujours creux et dynamiques. Les tableaux natifs (déclarés comme System.Array ou comme type[]) ne sont pas dynamiques.
11 Dans Visual Basic, les variables locales statiques de méthodes de classe non partagées sont stockées par instance de classe, au lieu de partager une même copie comme dans d'autres langages. Lorsque le mot clé Static est utilisé pour déclarer une variable, la valeur de cette variable est conservée même si la variable perd puis reprend sa portée.
Voir aussi
Référence
Comparaison des concepts de programmation dans différents langages avec des exemples de code
Comparaison des opérateurs dans différents langages
Comparaison des types de données dans différents langages