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 |
dichiaratori (concetto, non parola chiave) |
dichiaratori (le parole chiave includono tipi definiti dall'utente e tipi incorporati) |
||
Dichiarare una costante denominata |
||||
Creare una nuova istanza di una classe |
new |
|||
Creare un nuovo oggetto |
CreateObject per oggetti COM |
CoCreateInstance() (per oggetti COM) |
new |
|
Assegnare un oggetto a una variabile oggetto |
= |
= |
<- |
|
Funzione/metodo che non restituisce un valore |
Sub2 |
|||
Overload di una funzione o di un metodo (Visual Basic: overload di una routine o metodo) |
(Nessuna parola chiave del linguaggio richiesta) |
(Nessuna parola chiave del linguaggio richiesta) |
||
Fare riferimento all'oggetto corrente |
Me3 |
Utilizzare l'auto-identificatore come descritto in Metodi o Membri |
||
Effettuare una chiamata non virtuale a un metodo virtuale dell'oggetto corrente |
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 |
str.Chars(10) dove str è una stringa |
Dichiarare un tipo di dati composito (struttura) |
||||
Inizializzare un oggetto (costruttore) |
costruttori (concetto, non parola chiave) |
Costruttori o costruttori di tipi predefiniti del sistema |
||
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) |
||
Garantire che risorse non gestite vengano eliminate dopo l'utilizzo |
Non applicabile |
|||
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) |
|||
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) |
Non applicabile |
|
Dichiarare che un oggetto può essere modificato in modo asincrono |
Non applicabile |
Non applicabile |
||
Forzare la dichiarazione esplicita delle variabili |
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 |
L'inferenza dei tipi viene abilitata automaticamente |
|||
Eseguire il test di una variabile oggetto che non fa riferimento a un oggetto |
pobj == NULL |
obj == null |
Utilizzare un tipo di opzione in un'espressione di corrispondenza |
|
Valore di una variabile oggetto che non fa riferimento a un oggetto |
nullptr |
|||
Eseguire il test di un'espressione null di database |
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 |
property: la parola chiave dipropertysi riferisce al codice gestito |
Programmazione orientata ad oggetti
Scopo |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Fare riferimento a una classe base |
||||
Dichiarare un'interfaccia |
||||
Specificare un'interfaccia da implementare |
(È sufficiente derivare dall'interfaccia) class C1 : public I1 |
class C1 : I1 Interfacce |
||
Dichiarare una classe |
||||
Dichiarare un modulo |
static class |
static class |
||
Dichiarare una definizione parziale di una classe o struttura |
Non applicabile |
Nessun equivalente diretto.Vedere Estensioni di tipo (F#). |
||
Specificare che una classe può essere solo ereditata.Non è possibile creare un'istanza della classe. |
||||
Specificare che una classe non può essere ereditata |
||||
Dichiarare un tipo enumerato |
||||
Dichiarare una costante di classe |
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 |
Class C1 : public Base (nessuna parola chiave del linguaggio necessaria) |
class C1 : C2 |
||
Eseguire l'override di un metodo o una proprietà |
(Nessuna parola chiave del linguaggio richiesta tranne override (Estensioni del componente C++) per le compilazioni con /clr. Vedere Classi derivate) |
|||
Dichiarare un metodo che deve essere implementato in una classe di derivazione |
Inserire = 0 alla fine della dichiarazione (metodo virtual pure) |
|||
Dichiarare un metodo non sottoponibile a override |
NotOverridable (i metodi sono NotOverridable per impostazione predefinita) |
Utilizzare l'attributo Sealed. |
||
Dichiarare una proprietà o un metodo virtuale oppure una funzione di accesso a una proprietà |
abstract, come descritto in Metodi |
|||
Nascondere un membro di una classe base in una classe derivata |
nuovo (nuovo slot in vtable) (Estensioni del componente C++) |
Non è consentito nascondere un metodo virtuale o astratto |
||
Dichiarare un riferimento indipendente dai tipi al metodo di una classe |
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 |
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 |
Non applicabile |
Non applicabile |
Non applicabile |
Gestione delle eccezioni
Scopo |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Gestione delle eccezioni |
Gestione strutturata delle eccezioni:__try, __except Gestione delle eccezioni C++: Gestione delle eccezioni CLR: |
Strutture decisionali
Scopo |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Struttura decisionale (selezione) |
||||
Struttura decisionale (se...then) |
||||
Struttura ciclica (condizionale) |
||||
Struttura di ciclo (iterazione) |
Matrici
Scopo |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Dichiarare una matrice |
int[] x = new int[5]; |
let x = [| 1; 2; 3; 4; 5 |] |
||
Inizializzare una matrice |
let x = [| 1; 2; 3; 4; 5 |] |
|||
Riallocare una matrice |
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 |
||||
Visibile solo all'interno dell'assembly in cui viene dichiarato |
||||
Visibile solo nelle classi correnti o derivate |
Non applicabile |
Non applicabile |
||
L'accesso è limitato all'assembly corrente o ai tipi derivati dalla classe di appartenenza. |
protected internal |
Non applicabile |
||
Visibile solo all'interno del progetto (per le classi annidate, all'interno della classe che le contiene) |
Area di validità di un membro
Scopo |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Accessibile all'esterno della classe, del progetto e del modulo |
||||
Accessibile all'esterno della classe, ma all'interno del progetto o del package |
public private |
|||
Accessibile solo alle classi correnti e derivate |
Non applicabile |
|||
Accessibile solo all'interno della classe o del modulo |
||||
Specificare che una funzione o un'altra classe ha accesso ai membri private di una classe dichiarante |
Non applicabile |
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 internal |
Non applicabile |
Caratteristiche varie di durata
Scopo |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Conservare le variabili locali della routine |
Non applicabile |
|||
Condiviso da tutte le istanze di una classe |
Varie
Scopo |
Visual Basic |
C++ |
C# |
F# |
---|---|---|---|---|
Codice commenti |
//, (* *) per commenti su più righe |
|||
Distinzione tra maiuscole e minuscole |
No |
Sì |
Sì |
Sì |
Chiamare l'API Windows |
Non applicabile |
Utilizzare platform invoke. Vedere Funzioni esterne (F#). |
||
Dichiarare e generare un evento |
Non applicabile |
|||
Threading di primitivi |
Non applicabile |
|||
Passare a un punto (creazione di un ramo) |
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