Visual Studio

 

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

Visual J#

C++

C# NEW 

JScript

Visual FoxPro

Dichiarare una variabile

Private, Public, Friend, Protected, Static1, Shared, Dim

public, private, protected

static, final, volatile, transient

dichiaratori (concetto, non parola chiave)

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

var

[dichiarazione implicita]; anche PUBLIC, LOCAL, PRIVATE

Dichiarare una costante denominata

Const

final

const

const

readonly

const NEW 

#DEFINE

Creare un nuovo oggetto

New

new

new

new

new

n/d

 

CreateObject()

n/d

CoCreateInstance() (per oggetti COM)

 

ActiveXObject() nuovo

CREATEOBJECT; NEWOBJECT

Assegnare un oggetto a una variabile oggetto

=

=

=

=

=

=; anche STORE

Funzione/metodo che non restituisce un valore

Sub2

void

void

void

void

Void (solo server COM)

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

Overloads  NEW 

(Nessuna parola chiave del linguaggio richiesta)

(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

This;

Thisform

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

MyClass

n/d

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 NEW 

""

*(p + 10) oppure p[10] dove p è un carattere*

[]

str[10], dove str è una stringa, charAt, substring, substr4

SUBSTR( )

Dichiarare un tipo di dati composito (Visual Basic: Structure)

Structure <members> End Structure

class, interface

class, struct, union

__interface

struct, class, interface

class, interface NEW 

n/d

Inizializzare un oggetto (costruttori)

Sub New()5

costruttori (concetto, non parola chiave)

costruttori (concetto, non parola chiave)

Costruttori o costruttori di tipi predefiniti del sistema

costruttore (concetto, non parola chiave) 6

Evento Init

Terminare direttamente un oggetto

n/d

n/d

~ClassName

n/d

n/d

n/d

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

Finalize NEW (In Visual Basic 6.0, Class_Terminate)

finally

destructor

destructor

n/d

Evento Destroy

Inizializzare una variabile nel punto di dichiarazione

Dim x As Long = 5

Dim c As New Car(FuleTypeEnum.Gas)

int x = 5;

//oppure inizializzato dal costruttore

C c(10);

int x=5;

// inizializzare su un valore:

int x = 123;

// o utilizzare il costruttore predefinito:

int x = new int();

var x = 5

var y : car = new car()

n/d

Accettare l'indirizzo di una funzione

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

delegate, multicast, /** @delgate */

__delegate

delegate

Utilizzare il nome della funzione senza parentesi

n/d

Callback

n/d

Passare l'indirizzo di una funzione ad un'altra che richiama il chiamante. Per un esempio, vedere Utilizzo delle funzioni di callback.

CALLBACK (tipo standard);
callback (attributo IDL)

n/d

n/d

n/d

Dichiarare che un oggetto pul essere modificato in modo asincrono

n/d

volatile

volatile

volatile

n/d

n/d

Forzare la dichiarazione esplicita delle variabili

Option Explicit

N/d. Tutte le variabili devono essere dichiarate prima dell'utilizzo.

N/d. Tutte le variabili devono essere dichiarate prima dell'utilizzo.

N/d. Tutte le variabili devono essere dichiarate prima dell'utilizzo.

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

_VFP.LanguageOptions NEW 

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

obj = Nothing

pObj == null

pobj == NULL

obj == null

obj == undefined

obj == null

EMPTY(); ISNULL()

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

Nothing

null

n/d

null

null

undefined

n/d

Eseguire il test di un'espressione null di database

IsDbNull

Supportata da vari tipi di dati nello spazio dei nomi System.Data.SqlTypes

n/d

n/d

x == null

ISNULL( )

Verificare se una variabile Variant è stata inizializzata

n/d

n/d

n/d

n/d

x == undefined

EMPTY( )

Definire una proprietà predefinita

Default  NEW 

""

n/d

utilizzando gli indicizzatori

n/d

n/d

 

 

 

 

 

 

Programmazione orientata ad oggetti

Scopo

Visual Basic

Visual J#

C++

C# NEW 

JScript

Visual FoxPro

Fare riferimento a una classe base

MyBase  NEW 

super

__super

base

super NEW 

Proprietà BaseClass; ParentClass proprietà; DODEFAULT()

Dichiarare un'interfaccia

Interface  NEW 

interface

__interface

interface

interface NEW 

DEFINE CLASS

Specificare un'interfaccia da implementare

Implements (istruzione)

implements (clausola su dichiarazione di classe)

(È sufficiente derivare dall'interfaccia)

class C1 : public I1

class C1 : I1

implements NEW 

IMPLEMENTS  NEW 

Dichiarare una classe

Class  NEW 
<implementazione>

class

class

class

class NEW 

DEFINE CLASS MiaClasse AS <ClasseBase>

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

MustInherit NEW 

abstract

__abstract8 (solo nelle estensioni gestite per C++)

abstract

abstract NEW 

n/d

Specificare che una classe non può essere ereditata

NotInheritable NEW 

final

__sealed (solo nelle estensioni gestite per C++)

sealed

final NEW 

n/d

Dichiarare un tipo enumerato

Enum <members> End Enum

n/d

enum

enum

enum NEW 

n/d

Dichiarare una costante di classe

Const

static final (applicata a una dichiarazione di campo)

const

const (applicata a una dichiarazione di campo)

const NEW 

#DEFINE

Derivare una classe da una classe base

Inherits C2  NEW 

class C1 extends C2

Class C1 : public Base (non è necessaria alcuna parola chiave del linguaggio)

class C1 : C2

class c1 extends c2 NEW 

DEFINE CLASS MiaClasse AS ClassePadre

Eseguire l'override di un metodo

Overrides  NEW 

(Nessuna parola chiave del linguaggio richiesta)

(Nessuna parola chiave del linguaggio richiesta)

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  NEW 

abstract

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

abstract

abstract NEW 

(Nessuna parola chiave del linguaggio richiesta)

Dichiarare un metodo non sottoponibile ad override

NotOverridable NEW (per impostazione predefinita non è possibile sovrascrivere i metodi)

final

__sealed (solo nelle estensioni gestite per C++)

sealed

final NEW 

n/d

Dichiarare una proprietà, metodo virtuale (Visual Basic) o una funzione di accesso a una proprietà (C#, C++)

Overridable

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

virtual

virtual

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

n/d

Nascondere un membro di una classe basse in una classe derivata

Shadowing

n/d

n/d

n/d

Modificatore new

n/d

Dichiarare un riferimento type-safe al metodo di una classe

Delegate  NEW 

delegate, multicast, /** @delgate */

__delegate (solo nelle estensioni gestite per C++)

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

n/d

(Scrivere il codice - nessuna parola chiave specifica)

(Scrivere il codice - nessuna parola chiave specifica)

EVENTHANDLER( )  NEW 

Specificare gli eventi per cui verrà chiamata una routine eventi

Handles  NEW 
(le routine degli eventi possono ancora essere associate a una variabile WithEvents denominando il criterio)

n/d

n/d

n/d

n/d

n/d

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

With objExpr <.member> <.member> End With

n/d

n/d

n/d

with9

WITH ... ENDWITH

 

 

Gestione delle eccezioni

Scopo

Visual Basic

Visual J#

C++

C# NEW 

JScript

Visual FoxPro

Gestione delle eccezioni strutturata

Try NEW <attempt>
Catch
<handle errors>
Finally
<always execute>
End Try

try, catch, finally, throw

__try, __except, __finally

try, catch, finally,
throw

try, catch, finally, throw

ONERROR( ), COMRETURNERROR( ), ERROR(); MESSAGE(), AERROR()

Gestione delle eccezioni C++

n/d

n/d

try, catch, throw

n/d

n/d

n/d

 

Strutture decisionali

Scopo

Visual Basic

Visual J#

C++

C# NEW 

JScript

Visual FoxPro

Struttura decisionale (selezione)

Select Case ..., Case, Case Else, End Select

switch, case, break, default

switch, case, default, goto, break

switch, case, default, goto, break

switch, case, break

CASE

Struttura decisionale (if ... then)

If ... Then, ElseIf ... Then, Else, End If

if, else

if, else

if, else

if, else

IF ... ENDIF

Struttura ciclica (condizionale)

While, Do [While, Until] ..., Loop [While, Until]

do, while, continue

do, while, continue

do, while, continue

do, while, break, continue

DO, WHILE (clausole)

Struttura ciclica (iterazione)

For ..., [Exit For,] Next

For Each ..., [Exit For,] Next

for, break

for

for, foreach

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

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

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

 

Matrici

Scopo

Visual Basic

Visual J#

C++

C# NEW 

JScript

Visual FoxPro

Dichiarare una matrice

Dim a() As Long

int[] x = new int[5];

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 = {1,2,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)]

DIMENSION, DECLARE

Riallocare una matrice

Redim

n/d

n/d

n/d

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

DIMENSION, DECLARE

 

 

Area di validità di una classe

Scopo

Visual Basic

Visual J#

C++

C# NEW 

JScript

Visual FoxPro

Visibile all'esterno del progetto o assembly

Public

public

public

public

public NEW 

PUBLIC

Invisibile all'esterno dell'assembly (C#/Visual Basic) o all'interno del package (Visual J#, JScript)

Friend

(Omettendo la parola chiave dell'ambito si specifica un "ambito package")

private

internal

internal NEW 

n/d

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

Private

private

private

private

private NEW 

HIDDEN

 

 

 

Area di validità di un membro

Scopo

Visual Basic

Visual J#

C++

C# NEW 

JScript

Visual FoxPro

Accessibile all'esterno della classe e del progetto (Visual J#/JScript/C++/Visual Basic) o del modulo (Visual Basic)

Public

public

public

public

public NEW 

PUBLIC

Accessibile all'esterno della classe ma all'interno del progetto (C#, Visual Basic, C++) o del package (Visual J#, JScript)

Friend

(Omettendo la parola chiave dell'ambito si specifica un "ambito package")

public private:

internal

internal NEW 

n/d

Accessibile solo all'interno della classe (Visual J#/JScript/C++/Visual Basic) o del modulo (Visual Basic)

Private

private

private

private

private NEW 

HIDDEN

Accessibile solo alle classi correnti e derivate

Protected NEW 

protected

protected

protected

protected NEW 

PROTECTED

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

n/d

n/d

friend (non consentito nelle estensioni gestite per C++)

n/d

n/d

n/d

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

n/d

n/d

protected private:
(solo nelle estensioni gestite per C++)

n/d

n/d

n/d

 

Varie Durata

Scopo

Visual Basic

Visual J#

C++

C# NEW 

JScript

Visual FoxPro

Conservare le variabili locali della routine

Static11

static

static

n/d

n/d

PRIVATE

Condiviso da tutte le istanze di una classe

Shared NEW 

static

static

static

static NEW 

n/d

 

 

Varie

Scopo

Visual Basic

Visual J#

C++

C# NEW 

JScript

Visual FoxPro

Codice commenti

'

Rem

//

/**

*/

/*

*/

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

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

/// for XML comments

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

*; &&

Distinzione tra maiuscole e minuscole

No

No

Chiamare l'API Windows

Declare <API>

Usare J/Direct le chiamate al sistema operativo

n/d

Usare le chiamate al sistema operativo

n/d

DECLARE - DLL

Dichiarare e generare un evento

Event, RaiseEvent

Utilizzare la classe java.awt.Event o /** @event */

n/d

event

n/d

n/d

Threading di primitivi

SyncLock

synchronized

 

lock

n/d

n/d

Passare a un punto

Goto

n/d

goto

goto

n/d

n/d

 

1. L'unico punto in cui è possibile utilizzare solo Static per dichiarare una variabile - ad esempio Static x As Long - è 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. Me non viene risolta in fase di compilazione, quindi può essere utilizzata come valore restituito di una proprietà o metodo.

4. Sebbene sia ancora supportata, la funzione substr 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, ad esempio, al decimo carattere della stringa str, utilizzare str[10].

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

6. Non è consentito l'overload sui costruttori in JScript.

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 abstract include almeno un membro pure virtual.

9. Si noti l'assenza del punto iniziale che si utilizzerebbe in Visual Basic. Questa funzionalità può facilmente causare confusione in quanto le variabili possono essere scambiate per proprietà e viceversa. Si noti inoltre che l'istruzione with produce codice lento.

10. Non rialloca la matrice e neanche la "espande". 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. Le variabili locali statiche di metodi di classe non condivisi sono memorizzate per istanza di classe in Visual Basic anziché condividere 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à.