Confronto tra parole chiave in diversi linguaggi

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.

Scopo

Visual Basic

C++

C#

F#

Dichiarare una variabile

Dim

Public

Friend

Protected

Private

Shared

Statico1

dichiaratori (concetto, non parola chiave)

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

Associazioni let

Valori

Dichiarare una costante denominata

Const

const

const

readonly

Associazioni let

Valori

Creare una nuova istanza di una classe

Nuovo

new

ref new, gcnew (Estensioni del componente C++)

new

new

Creare un nuovo oggetto

Nuovo

CreateObject per oggetti COM

CoCreateInstance() (per oggetti COM)

new 

new

Assegnare un oggetto a una variabile oggetto

=

=

=

<-

Funzione/metodo che non restituisce un valore

Sub2

void

void

Tipo di unità

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)

override

Fare riferimento all'oggetto corrente

Me3

this

this

Utilizzare l'auto-identificatore come descritto in Metodi o Membri

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.

Non applicabile

Non applicabile

Recuperare un carattere da una stringa

GetChar, o str(10) in cui str è una stringa

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

str[10] dove str è una stringa

string

str.Chars(10) dove str è una stringa

Stringhe

Dichiarare un tipo di dati composito (struttura)

Struttura

Classe

Interfaccia

class

struct

union

__interface

struct

class

interfaccia

Classi

Inizializzare un oggetto (costruttore)

Sub New()4

costruttori (concetto, non parola chiave)

Costruttori o costruttori di tipi predefiniti del sistema

Costruttori di classi

Costruttori

Terminare direttamente un oggetto

Non applicabile

~ClassName

Non applicabile

Non applicabile

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

Finalize (in Visual Basic 6.0, Class_Terminate)

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

Distruttori

Finalize

Garantire che risorse non gestite vengano eliminate dopo l'utilizzo

Using

Non applicabile

utilizzo

Gestione delle risorse

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

let x = 123

Accettare l'indirizzo di una funzione

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

delegato (Estensioni del componente C++)

delegato

Funzioni

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)

delegato

Non applicabile

Dichiarare che un oggetto può essere modificato in modo asincrono

Non applicabile

volatile

volatile

Non applicabile

Forzare la dichiarazione esplicita delle variabili

Option Explicit

Non applicabile (tutte le variabili devono essere dichiarate prima dell'uso)

Non applicabile (tutte le variabili devono essere dichiarate prima dell'uso)

Non applicabile (tutte le variabili devono essere dichiarate prima dell'uso)

Attivare l'inferenza dei tipi locali

Option Infer

L'inferenza dei tipi viene abilitata automaticamente

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

obj Is Nothing

pobj == NULL

obj == null

Utilizzare un tipo di opzione in un'espressione di corrispondenza

Opzione

Espressioni match

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

Nothing

nullptr

null

Valori Null

Eseguire il test di un'espressione null di database

IsDBNull

Non applicabile

Non applicabile

Non applicabile

Verificare se una variabile Variant è stata inizializzata

Non applicabile

Non applicabile

Non applicabile

Non applicabile

Definire una proprietà predefinita

Predefinito

property: la parola chiave dipropertysi riferisce al codice gestito

Indicizzatori

Proprietà indicizzate

Programmazione orientata ad oggetti

Scopo

Visual Basic

C++

C#

F#

Fare riferimento a una classe base

MyBase

__super

base

base

Dichiarare un'interfaccia

Interfaccia

__interface

classe di interfaccia (Estensioni del componente C++)

interfaccia

interfaccia

Specificare un'interfaccia da implementare

Implements

(È sufficiente derivare dall'interfaccia)

class C1 : public I1

class C1 : I1

Interfacce

interfaccia

Dichiarare una classe

Classe

class

Classi e struct (Estensioni del componente C++)

class

type

Dichiarare un modulo

Modulo

static class

static class

modulo

Dichiarare una definizione parziale di una classe o struttura

Partial

Non applicabile

Partial

Nessun equivalente diretto.Vedere Estensioni di tipo (F#).

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

MustInherit

abstract (Estensioni del componente C++)6

abstract

Classi astratte

Specificare che una classe non può essere ereditata

NotInheritable

sealed (Estensioni del componente C++)

sealed

SealedAttribute

Dichiarare un tipo enumerato

Enum

enum

enum

type

Dichiarare una costante di classe

Const

const

const (applicata a una dichiarazione di campo)

I valori non sono modificabili (costanti) per impostazione predefinita.Vedere Valori (F#).

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

eredita

Eseguire l'override di un metodo o una proprietà

Overrides

(Nessuna parola chiave del linguaggio richiesta tranne override (Estensioni del componente C++) per le compilazioni con /clr. Vedere Classi derivate)

override

override

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

MustOverride

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

abstract

abstract

Dichiarare un metodo non sottoponibile a override

NotOverridable (i metodi sono NotOverridable per impostazione predefinita)

sealed (Estensioni del componente C++)

sealed

Utilizzare l'attributo Sealed.

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

Overridable

virtual

virtual

abstract, come descritto in Metodi

Nascondere un membro di una classe base in una classe derivata

Shadowing

nuovo (nuovo slot in vtable) (Estensioni del componente C++)

new

Non è consentito nascondere un metodo virtuale o astratto

Dichiarare un riferimento indipendente dai tipi al metodo di una classe

Delegato

delegato (Estensioni del componente C++)

delegato

myObj.myFunction dove myObj è un oggetto e myMethod è un metodo disponibile su quell'oggetto

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

WithEvents

Non applicabile

(Scrivere il codice - nessuna parola chiave specifica)

Non applicabile

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)

Non applicabile

event += eventHandler;

Non applicabile

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

With...End With

Non applicabile

Non applicabile

Non applicabile

Gestione delle eccezioni

Scopo

Visual Basic

C++

C#

F#

Gestione delle eccezioni

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

Throw

Gestione strutturata delle eccezioni:__try, __except

__finally

Gestione delle eccezioni C++:

try, catch, throw

Gestione delle eccezioni CLR:

Gestione delle eccezioni (Estensioni del componente C++)

try, catch, finally

throw

try

con

finally

Strutture decisionali

Scopo

Visual Basic

C++

C#

F#

Struttura decisionale (selezione)

Seleziona...Case...End Select

switch, case, default

goto

break

switch, case

predefinito

goto

break

Espressioni match

Struttura decisionale (se...then)

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

ElseIf

if, else

if, else

if...then...else

Struttura ciclica (condizionale)

While...End While

Do...Loop

do, while

continue

do

while

continue

while...do

Struttura di ciclo (iterazione)

For...Next

For Each...Next

for

for

foreach

per... a

per... in

Matrici

Scopo

Visual Basic

C++

C#

F#

Dichiarare una matrice

Dim a() As Long

int x[5];

int[] x = new int[5];

let x = [| 1; 2; 3; 4; 5 |]

Matrici

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

let x = [| 1; 2; 3; 4; 5 |]

Matrici

Riallocare una matrice

Redim

Non applicabile

Non applicabile

Non applicabile

Area di validità di una classe

Scopo

Visual Basic

C++

C#

F#

Visibile all'esterno del progetto o assembly

Public

public

public

public

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

Friend

private

internal

internal

Visibile solo nelle classi correnti o derivate

Protected

Non applicabile

Protected

Non applicabile

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

Protected Friend

Visibilità di tipo e membro

protected internal

Livelli di accessibilità

Non applicabile

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

Private

private

private

private

Area di validità di un membro

Scopo

Visual Basic

C++

C#

F#

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

Public

public

public

public

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

Friend

public private

internal

internal

Accessibile solo alle classi correnti e derivate

Protected

protected

protected

Non applicabile

Accessibile solo all'interno della classe o del modulo

Private

private

private

private

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

Non applicabile

friend

Non applicabile

Non applicabile

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

Non applicabile

protected private

Non applicabile

Non applicabile

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

Protected Friend

Visibilità di tipo e membro

protected internal

Livelli di accessibilità

Non applicabile

Caratteristiche varie di durata

Scopo

Visual Basic

C++

C#

F#

Conservare le variabili locali della routine

Statico7

static

static

Non applicabile

Condiviso da tutte le istanze di una classe

Shared

static

static

static

Varie

Scopo

Visual Basic

C++

C#

F#

Codice commenti

'

Rem

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

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

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

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

Distinzione tra maiuscole e minuscole

No

Chiamare l'API Windows

Declare <API>

Non applicabile

Utilizzare platform invoke

Utilizzare platform invoke.

Vedere Funzioni esterne (F#).

Dichiarare e generare un evento

Evento

RaiseEvent

Non applicabile

evento

Eventi

Threading di primitivi

SyncLock

Non applicabile

blocco

blocco

Passare a un punto (creazione di un ramo)

Goto

goto

goto

Non applicabile

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 Visual Basic, i costruttori per le classi derivate da System.Object di .NET Framework sono sempre denominati New.

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

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

7 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 programmabili in diversi linguaggi e librerie

Altre risorse

Equivalenti di linguaggio