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

Dim, instruction (Visual Basic)

Public (Visual Basic)

Friend (Visual Basic)

Protected (Visual Basic)

Private (Visual Basic)

Shared (Visual Basic)

Static (Visual Basic)1

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

const

const

readonly

const

#DEFINE

Crée une instance de la classe.

Nouveau

new

gcnew

new

new

Fonction NEWOBJECT( )

Créer un nouvel objet

New (Visual Basic)

CreateObject() pour les objets COM

CoCreateInstance() (pour les objets COM)

new

nouveau ActiveXObject()

Fonction CREATEOBJECT( )

Assigner un objet à une variable objet

=

=

=

=

=

STORE

La fonction/méthode ne retourne pas de valeur

Sub2

void

void

void

Void (serveurs COM uniquement)

Surcharger une fonction ou une méthode (en Visual Basic : surcharger une procédure ou une méthode)

Overloads

(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

this

this

thisform

Effectuer un appel non virtuel à une méthode virtuelle de l'objet en cours

MyClass

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

GetChar, fonction

*(p + 10) ou p[10] où p représente un char* ou wchar_t*

str[10] où str représente une chaîne

string4

str[10], où str est une string

charAt

substring

substr

SUBSTR( )

Déclarer un type de données composé (structure)

Structure

class

struct

union

__interface

struct

class

interface

class, interface

N/A

Initialiser un objet (constructeur)

Sub New()5

constructeurs (concept, et non mot clé)

Constructeurs, ou constructeurs de type par défaut du système

Constructeurs de classe

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

Destructeurs

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

delegate

delegate

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)

delegate

N/A

N/A

Déclarer qu'un objet peut être modifié de manière asynchrone.

N/A

volatile

volatile

N/A

N/A

Forcer une déclaration explicite de variables

Option Explicit

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.

Option Infer

Tester une variable objet ne faisant pas référence à un objet

obj Is Nothing

pobj == NULL

obj == null

obj == undefined

obj == null

VARTYPE(obj)=="0"

Valeur d'une variable objet ne faisant pas référence à un objet

Nothing

nullptr

null

null

undefined

.F.

Tester une expression de base de données null

IsDbNull

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

Default

property : le mot clé property fait référence au code managé

Indexeurs

N/A

N/A

Programmation orientée objet

But

Visual Basic

C++

C#

JScript

Visual FoxPro

Faire référence à une classe de base

MyBase

__super

base

super

Propriété BaseClass

Propriété ParentClass

DODEFAULT()

Classe::membre

Déclarer une interface

Interface

__interface

interface class

interface

interface

DEFINE CLASS

Spécifier une interface à implémenter

Implements

(Est simplement dérivé de l'interface)

class C1 : public I1

class C1 : I1

Interfaces

IMPLEMENTS

IMPLEMENTS NOUVEAU

Déclarer une classe

Class

class

Classes and Structs (Managed)

class

class

DEFINE CLASSMyClassAS <ClasseParente>

Déclarer un module

Module

static class

static class

N/A

N/A

Déclarer la définition partielle d'une classe ou d'une structure

Partial

N/A

Partial

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.

MustInherit

abstract (Visual C++)8

abstract

abstract

N/A

Spécifier qu'une classe ne peut pas être héritée.

NotInheritable

sealed

sealed

final

N/A

Déclarer un type énuméré

Enum

enum

enum

enum

N/A

Déclarer une constante de classe

Const

const

const (appliqué à une déclaration de champ)

const

#DEFINE

Dériver une classe d'une classe de base

La classe C1 hérite de C2.

Class C1 : public Base (Aucun mot clé du langage n'est requis à cet effet)

class C1 : C2

class

Class c1 étend c2

DEFINE CLASSMyClass AS ClasseParente

Substituer une méthode ou une propriété

Overrides

(Aucun mot clé du langage requis à cet effet, sauf override pour les compilations /clr - consultez Derived Classes)

override

(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

MustOverride

Placez = 0 à la fin de la déclaration (méthode virtuelle pure)

abstract

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

sealed

sealed

final

N/A

Déclarer une méthode virtuelle ou une propriété, ou un accesseur de propriété

Overridable

virtual

virtual

(Par défaut, les méthodes sont virtuelles)

N/A

Masque un membre de la classe de base dans une classe dérivée

Occultation

new (new slot in vtable)

new (Référence C#)

new, modificateur

N/A

Déclarer une référence de type sécurisé à une méthode de classe

Délégué

delegate

delegate

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

WithEvents

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

With...End With

N/A

using, instruction (Référence C#)

avec9

WITH ... ENDWITH

Gestion des exceptions

But

Visual Basic

C++

C#

JScript

Visual FoxPro

Gestion structurée des exceptions

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

Gestion des exceptions C++

N/A

try, catch, throw

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)

Select... Case... End Select

switch, case, default

goto

break

switch

case

default

goto

break

switch

case

break

CASE

ICASE

Structure de la décision (if … then)

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

ElseIf

if, else

if, else

if

else

IF ... ENDIF

IIF( )

Structure de boucle (conditionnelle)

While... End While

Do...Loop

do, while

continue

do

while

continue

do, while

break, continue

DO, WHILE (clauses)

Structure de boucle (itération)

For... Next

For Each... Next

for

for

foreach

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

Dim a() As Long

int x[5];

int[] x = new int[5];

var x: int []

var arr = Array()

DIMENSION

DECLARE

Initialiser un tableau

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

Réallouer un tableau

Redim

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

public

public

public

N/A

Visible uniquement dans l'assembly dans lequel elle est déclarée.

Friend

private

internal

internal

N/A

Visible uniquement dans les classes courantes ou dérivées

Protégé

N/A

Protected

N/A

N/A

L'accès est restreint à l'assembly en cours ou aux types dérivés de la classe conteneur.

Protected Friend

Type and Member Visibility

protected internal

Niveaux d'accessibilité

N/A

N/A

Visible uniquement dans le projet (pour les classes imbriquées, dans la classe englobante)

Private

private

private

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

public

public

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

Friend

public private:

internal

internal

N/A

Accessible uniquement aux classes en cours et dérivées

Protected

protected

protected

protected

PROTECTED

Uniquement accessible dans une classe ou un module

Private

private

private

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 Friend

Type and Member Visibility

protected internal

Niveaux d'accessibilité

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

static

static (Référence C#)

N/A

N/A

Partagé par toutes les instances d'une classe

Shared

static

static

static

N/A

Divers

But

Visual Basic

C++

C#

JScript

Visual FoxPro

Commenter le code

'

Rem

//, /* */ pour les commentaires multilignes

//, /* */ pour les commentaires multilignes

/// pour les commentaires XML

//, /* */ pour les commentaires multilignes

*

&&

REMARQUE

Respect de la casse ?

Non

Oui

Oui

Oui

Non

Appeler une API Windows

Declare <API>

N/A

utiliser l'appel de code non managé

N/A

DECLARE - DLL

Déclarer et déclencher un événement

Événement

RaiseEvent

N/A

event

N/A

Fonction RAISEEVENT( )

Primitives de thread

SyncLock

N/A

lock

N/A

N/A

Aller à (branche)

Goto

goto

goto

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

Comparaison des contrôles et des objets programmables dans différents langages et dans différentes bibliothèques

Autres ressources

Équivalents de langage

Visual J#