Confronto tra parole chiave in diversi linguaggi

Aggiornamento: novembre 2007

In questo argomento vengono elencate le comuni attività di programmazione che è possibile riepilogare con una parola chiave del linguaggio. Per ulteriori informazioni sulle attività per cui sono necessari esempi di codice, vedere Confronto tra concetti di programmazione in diversi linguaggi con esempi di codice.

Funzione

Visual Basic

C++

C#

JScript

Visual FoxPro

Dichiarare una variabile

Istruzione Dim (Visual Basic)

Public (Visual Basic)

Friend (Visual Basic)

Protected (Visual Basic)

Private (Visual Basic)

Shared (Visual Basic)

Static (Visual Basic)1

dichiaratori (concetto, non parola chiave)

dichiaratori (le parole chiave includono tipi definiti dall'utente e tipi incorporati)

var

(dichiarazione implicita)

PUBLIC

LOCAL

PRIVATE

Dichiarare una costante denominata

Const

const

const

readonly

const

#DEFINE

Creare una nuova istanza di una classe

New

new

gcnew

new

new

Funzione NEWOBJECT( )

Creare un nuovo oggetto

New (Visual Basic)

CreateObject() per oggetti COM

CoCreateInstance() (per oggetti COM)

new 

nuovo ActiveXObject()

Funzione CREATEOBJECT( )

Assegnare un oggetto a una variabile oggetto

=

=

=

=

=

STORE

Funzione/metodo che non restituisce un valore

Sub2

void

void

void

Void (solo server COM)

Overload di una funzione o di un metodo (Visual Basic: overload di una routine o metodo)

Overloads

(Nessuna parola chiave del linguaggio richiesta)

(Nessuna parola chiave del linguaggio richiesta)

(Nessuna parola chiave del linguaggio richiesta)

(Nessuna parola chiave del linguaggio richiesta)

Fare riferimento all'oggetto corrente

Me3

this

this

this

this

thisform

Effettuare una chiamata non virtuale a un metodo virtuale dell'oggetto corrente

MyClass

MyClass::Func1(), dove MyClass è una classe C++ con una funzione membro Func1.

n/d

n/d

n/d

Recuperare un carattere da una stringa

Funzione GetChar

*(p + 10) o p[10] dove p corrisponde a char* o wchar_t*

str[10] dove str è una stringa

string4

str[10], dove str è una string

charAt

substring

substr

SUBSTR( )

Dichiarare un tipo di dati composito (struttura)

Struttura

class

struct

union

__interface

struct

class

interface

class, interface

n/d

Inizializzare un oggetto (costruttore)

Sub New()5

costruttori (concetto, non parola chiave)

Costruttori o costruttori di tipi predefiniti del sistema

Costruttori di classi

Costruttore (concetto, non parola chiave)6

Evento Init

Terminare direttamente un oggetto

n/d

~ClassName

n/d

n/d

n/d

Metodo chiamato dal sistema appena prima che Garbage Collection recuperi un oggetto7

Finalize (in Visual Basic 6.0, Class_Terminate)

Destructors (C++) (concetto, non parola chiave)

Distruttori

n/d

Evento Destroy

Inizializzare una variabile nel punto di dichiarazione

Dim x As Long = 5

Dim c As New Car(FuelTypeEnum.Gas)

// inizializzare su un valore:

int x=5;

// con un costruttore adatto:

C c(10);

// inizializzare su un valore:

int x = 123;

// o utilizzare il costruttore predefinito:

int x = new int();

var x = 5

var y : car = new car()

LOCAL x

x = 5

Accettare l'indirizzo di una funzione

AddressOf (questo operatore restituisce un riferimento a una funzione sotto forma di istanza di delegato)

delegate

delegate

Utilizzare il nome della funzione senza parentesi

n/d

Callback

Passare l'indirizzo di una funzione ad un'altra che richiama il chiamante. Per un esempio, vedere Procedura: passare una routine a un'altra routine in Visual Basic.

CALLBACK (tipo standard)

callback (attributo IDL)

delegate

n/d

n/d

Dichiarare che un oggetto può essere modificato in modo asincrono

n/d

volatile

volatile

n/d

n/d

Forzare la dichiarazione esplicita delle variabili

Option Explicit

n/d (Tutte le variabili devono essere dichiarate prima dell'uso)

n/d (Tutte le variabili devono essere dichiarate prima dell'uso)

modalità fast (attiva in base all'impostazione predefinita)

_VFP.LanguageOptions NEW 

Attivare l'inferenza dei tipi locali

Option Infer

Eseguire il test di una variabile oggetto che non fa riferimento a un oggetto

obj Is Nothing

pobj == NULL

obj == null

obj == undefined

obj == null

VARTYPE(obj)=="0"

Valore di una variabile oggetto che non fa riferimento a un oggetto

Nothing

nullptr

null

null

undefined

.F.

Eseguire il test di un'espressione null di database

IsDbNull

n/d

n/d

x == null

ISNULL( )

Verificare se una variabile Variant è stata inizializzata

n/d

n/d

n/d

x == undefined

EMPTY( )

Definire una proprietà predefinita

Default

property: la parola chiave property fa riferimento a codice gestito

Indicizzatori

n/d

n/d

Programmazione orientata ad oggetti

Funzione

Visual Basic

C++

C#

JScript

Visual FoxPro

Fare riferimento a una classe base

MyBase

__super

base

super

Proprietà BaseClass

Proprietà ParentClass

DODEFAULT()

Class::member

Dichiarare un'interfaccia

Interfaccia

__interface

interface class

interface

interface

DEFINE CLASS

Specificare un'interfaccia da implementare

Implements

(È sufficiente derivare dall'interfaccia)

class C1 : public I1

class C1 : I1

Interfacce

IMPLEMENTS

IMPLEMENTS Nuovo 

Dichiarare una classe

Classe

class

Classes and Structs (Managed)

class

class

DEFINE CLASSMyClassAS <ParentClass>

Dichiarare un modulo

Modulo

static class

static class

n/d

n/d

Dichiarare una definizione parziale di una classe o struttura

Partial

n/d

Partial

n/d

n/d

Specificare che una classe può essere solo ereditata. Non è possibile creare un'istanza della classe.

MustInherit

abstract (Visual C++)8

abstract

abstract

n/d

Specificare che una classe non può essere ereditata

NotInheritable

sealed

sealed

final

n/d

Dichiarare un tipo enumerato

Enum

enum

enum

enum

n/d

Dichiarare una costante di classe

Const

const

const (applicata a una dichiarazione di campo)

const

#DEFINE

Derivare una classe da una classe base

La classe C1 eredita la classe C2

Class C1 : public Base (nessuna parola chiave del linguaggio necessaria)

class C1 : C2

class

Class c1 extends c2

DEFINE CLASS MyClass AS ParentClass

Eseguire l'override di un metodo o una proprietà

Overrides

(Nessuna parola chiave del linguaggio richiesta tranne override per le compilazioni con /clr. Vedere Derived Classes)

override

(Nessuna parola chiave del linguaggio richiesta)

(Nessuna parola chiave del linguaggio richiesta)

Dichiarare un metodo che deve essere implementato in una classe di derivazione

MustOverride

Inserire = 0 alla fine della dichiarazione (metodo virtual pure)

abstract

abstract

(Nessuna parola chiave del linguaggio richiesta)

Dichiarare un metodo non sottoponibile a override

NotOverridable (i metodi sono NotOverridable per impostazione predefinita)

sealed

sealed

final

n/d

Dichiarare una proprietà o un metodo virtuale oppure una funzione di accesso a una proprietà

Overridable

virtual

virtual

(I metodi sono virtuali in base all'impostazione predefinita)

n/d

Nascondere un membro di una classe base in una classe derivata

Shadowing

new (new slot in vtable)

new (Riferimenti per C#)

Modificatore new

n/d

Dichiarare un riferimento indipendente dai tipi al metodo di una classe

Delegato

delegate

delegate

Utilizzare il nome della funzione senza parentesi

n/d

Specificare che una variabile può contenere un oggetto di cui si desidera gestire gli eventi

WithEvents

n/d

(Scrivere il codice - nessuna parola chiave specifica)

(Scrivere il codice - nessuna parola chiave specifica)

EVENTHANDLER( )  Nuovo 

Specificare gli eventi per cui verrà chiamata una routine eventi

Handles (le routine eventi possono comunque essere associate a una variabile WithEvents in base al modello di denominazione)

n/d

event += eventHandler;

n/d

BINDEVENTS( )

Valutare una volta un'espressione dell'oggetto per accedere a più membri

With... End With

n/d

Istruzione using (Riferimenti per C#)

con9

WITH ... ENDWITH

Gestione delle eccezioni

Funzione

Visual Basic

C++

C#

JScript

Visual FoxPro

Gestione strutturata delle eccezioni

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

Gestione delle eccezioni C++

n/d

try, catch, throw

n/d

n/d

n/d

Strutture decisionali

Funzione

Visual Basic

C++

C#

JScript

Visual FoxPro

Struttura decisionale (selezione)

Select... Case... End Select

switch, case, default

goto

break

switch

case

default

goto

break

switch

case

break

CASE

ICASE

Struttura decisionale (if ... then)

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

ElseIf

if, else

if, else

if

else

IF ... ENDIF

IIF( )

Struttura ciclica (condizionale)

While... End While

Do...Loop

do, while

continue

do

while

continue

do, while

break, continue

DO, WHILE (clausole)

Struttura ciclica (iterazione)

For... Next

For Each... Next

for

for

foreach

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

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

FOR (clausole)

FOR ... ENDFOR

Continue

NEXT

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

Matrici

Funzione

Visual Basic

C++

C#

JScript

Visual FoxPro

Dichiarare una matrice

Dim a() As Long

int x[5];

int[] x = new int[5];

var x : int[]

var arr = Array()

DIMENSION

DECLARE

Inizializzare una matrice

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

Riallocare una matrice

Redim

n/d

n/d

arr.length=newSize (solo per matrici JScript)10

DIMENSION

DECLARE

Area di validità di una classe

Funzione

Visual Basic

C++

C#

JScript

Visual FoxPro

Visibile all'esterno del progetto o assembly

Public

public

public

public

n/d

Visibile solo all'interno dell'assembly in cui viene dichiarato

Friend

private

internal

internal

n/d

Visibile solo nelle classi correnti o derivate

Protected

n/d

Protected

n/d

n/d

L'accesso è limitato all'assembly corrente o ai tipi derivati dalla classe di appartenenza.

Protected Friend

Type and Member Visibility

protected internal

Livelli di accessibilità

n/d

n/d

Visibile solo all'interno del progetto (per le classi nidificate, all'interno della classe che le contiene)

Private

private

private

private

n/d

Area di validità di un membro

Funzione

Visual Basic

C++

C#

JScript

Visual FoxPro

Accessibile all'esterno della classe, del progetto e del modulo

Public

public

public

public

(Nessuna parola chiave del linguaggio richiesta)

Accessibile all'esterno della classe, ma all'interno del progetto o del package

Friend

public private:

internal

internal

n/d

Accessibile solo alle classi correnti e derivate

Protected

protected

protected

protected

PROTECTED

Accessibile solo all'interno della classe o del modulo

Private

private

private

private

HIDDEN

Specificare che una funzione o un'altra classe ha accesso ai membri private di una classe dichiarante

n/d

friend (non consentito in C++)

friend

n/d

n/d

Protetto all'interno dell'assembly e privato per gli altri assembly

n/d

protected private

n/d

n/d

n/d

L'accesso è limitato all'assembly corrente o ai tipi derivati dalla classe di appartenenza

Protected Friend

Type and Member Visibility

protected internal

Livelli di accessibilità

n/d

n/d

Caratteristiche varie di durata

Funzione

Visual Basic

C++

C#

JScript

Visual FoxPro

Conservare le variabili locali della routine

Static11

static

static (Riferimenti per C#)

n/d

n/d

Condiviso da tutte le istanze di una classe

Shared

static

static

static

n/d

Varie

Funzione

Visual Basic

C++

C#

JScript

Visual FoxPro

Codice commenti

'

Rem

//, /* */ per commenti su più righe

//, /* */ per commenti su più righe

//, /* */ per commenti su più righe

//, /* */ per commenti su più righe

*

&&

NOTE

Distinzione tra maiuscole e minuscole

No

No

Chiamare l'API Windows

Declare <API>

n/d

Utilizzare richiamo piattaforma

n/d

DECLARE - DLL

Dichiarare e generare un evento

Evento

RaiseEvent

n/d

event

n/d

Funzione RAISEEVENT( )

Threading di primitivi

SyncLock

n/d

lock

n/d

n/d

Passare a un punto (diramazione)

Goto

goto

goto

n/d

n/d

1 In Visual Basic, è possibile utilizzare soltanto Static per dichiarare una variabile, ad esempio Static x As Long, solo all'interno di una routine.

2 In Visual Basic, le routine dichiarate con la parola chiave Sub non possono restituire valori. Se una routine deve restituire un valore, è necessario dichiararla con la parola chiave Function.

3 In Visual Basic, Me non viene risolta in fase di compilazione e può pertanto essere utilizzata come valore restituito di una proprietà o un metodo.

4 In JScript, la funzione substr è ancora supportata, ma non è più il metodo ottimale per accedere ai caratteri all'interno di una stringa. Il modo più efficace per accedere ad un carattere da una specifica posizione in una stringa è utilizzando le parentesi quadre. Per accedere al decimo carattere della stringa str, ad esempio, utilizzare str[10].

5 In Visual Basic, i costruttori per le classi derivate da System.Object di .NET Framework sono sempre denominati New.

6 In JScript, non è consentito l'overload sui costruttori.

7 In genere, il codice in questo metodo libera risorse di sistema che altrimenti non verrebbero liberate automaticamente dal Garbage Collector.

8 In C++, una classe astratta include almeno un membro virtual pure.

9 In JScript non è presente il punto iniziale che verrebbe utilizzato in Visual Basic. Questa funzionalità può facilmente causare confusione, poiché le variabili possono essere erroneamente interpretate come proprietà e viceversa. Si noti inoltre che l'istruzione with produce codice lento.

10 In JScript, ciò non determina la riallocazione della matrice, né la relativa "espansione". Le matrici di JScript (dichiarate come tipo Array) sono sempre sparse e dinamiche. Le matrici native, dichiarate come System.Array o type[], non sono dinamiche.

11 In Visual Basic, le variabili locali statiche di metodi di classe non condivisi vengono archiviate per istanza di classe, anziché con la condivisione di un'unica copia come in altri linguaggi. Quando si utilizza Static per dichiarare una variabile, il valore di tale variabile viene mantenuto anche se la variabile perde e poi riacquisisce la propria area di validità.

Vedere anche

Riferimenti

Confronto tra concetti di programmazione in diversi linguaggi con esempi di codice

Confronto tra operatori in diversi linguaggi

Confronto tra tipi di dati in diversi linguaggi

Confronto tra controlli e oggetti di programmazione in diversi linguaggi e librerie

Altre risorse

Equivalenti in diversi linguaggi

Visual J#