Differenze tra i linguaggi di programmazione

La differenza più significativa tra i linguaggi di programmazione supportati è naturalmente la sintassi. I linguaggi C++ e Visual Basic esistono da diverso tempo e presentano una base di codice piuttosto estesa, che è stata tenuta in considerazione durante l'esecuzione dell'aggiornamento dei linguaggi per l'ambiente .NET. Vicual C#, invece, nasce quasi da zero. Di seguito sono elencate le principali differenze tra i diversi linguaggi mentre nelle sezioni successive verranno introdotti argomenti avanzati quali il processo di generazione e la definizione degli spazi dei nomi, ciascuno accompagnato dal corrispondente codice di esempio.

Distinzione tra maiuscole e minuscole — Nei linguaggi C++ e Visual C# esiste distinzione tra maiuscole e minuscole. Questa distinzione non esiste invece in Visual Basic. Perché un programma sia compatibile con lo standard CLS, tuttavia, i membri pubblici non possono presentare come unica differenza la distinzione tra maiuscole e minuscole. Questa restrizione consente a Visual Basic e ad altri eventuali linguaggi compatibili con CLS di produrre componenti nonché di utilizzare componenti creati in altri linguaggi sensibili alla distinzione tra maiuscole e minuscole.

Riferimenti a una libreria — Per poter utilizzare classi, che si trovano negli spazi dei nomi, è necessario ottenere un riferimento all'assembly contenente lo spazio dei nomi richiesto. Tutti i programmi .NET utilizzano come minimo lo spazio dei nomi System, che si trova nella libreria Mscorlib.dll inclusa generalmente nella directory Windows\System. Visual Basic e Visual C# fanno implicitamente riferimento alla libreria Mscorlib.dll, ma in un programma con estensioni gestite per C++ è necessario includere la seguente direttiva per il preprocessore:

#using <mscorlib.dll>

Sebbene Visual C# e Visual Basic facciano implicitamente riferimento all'assembly mscorlib, per altri assembly è necessario utilizzare l'opzione di compilazione /reference. Le librerie alle quali si fa riferimento sono generalmente incluse nella directory dell'applicazione oppure in una sottodirectory dell'applicazione. Le librerie progettate per essere utilizzate da numerose applicazioni, quali ad esempio strumenti forniti da terze parti, si trovano nella cache assembly (WindowsDirectory\Assembly) e devono rispettare requisiti specifici. I file di configurazione delle applicazioni possono fornire ulteriori opzioni. Per le applicazioni ASP.NET, tuttavia, i componenti devono trovarsi nella sottodirectory \Bin della directory virtuale per il punto di inizio dell'applicazione.

Importazione di uno spazio dei nomi — È possibile fare riferimento alle classi specificandone i nomi completi, con una forma simile a un percorso completo (ad esempio, System.IO.FileStream), oppure importare nel programma lo spazio dei nomi in cui le classi sono contenute. In quest'ultimo caso non sarà necessario specificare il nome completo delle classi. Per un migliore accesso agli oggetti System, tale spazio dei nomi deve essere importato, come illustrato nella tabella riportata di seguito.

Estensioni gestite per C++
using namespace System;
Visual C#
using System;
Visual Basic
Imports System

Riferimenti a membri di oggetti — Sia Visual Basic che Visual C# supportano il punto (.) come operatore di risoluzione dell'ambito e ciò consente la sintassi Console.WriteLine quando si fa riferimento al metodo WriteLine dell'oggetto Console. Nelle estensioni gestite per C++ come operatore di risoluzione viene utilizzato un doppio segno di due punti (::).

Dichiarazione di oggetti — Nelle estensioni gestite per C++ e in Visual C# è necessario dichiarare le variabili prima di utilizzarle. Questo non è necessario in Visual Basic. È possibile creare una nuova istanza di un oggetto utilizzano la parola chiave new. Nella tabella riportata di seguito sono elencate istruzioni di dichiarazione e creazione di esempio per ciascuno dei tre linguaggi. Con ciascuna istruzioni viene dichiarato e creato un oggetto di tipo Comp denominato myComp che si trova nello spazio dei nomi Lib.

C++
Lib::Comp* myComp = new Lib::Comp();
Visual C#
Lib.Comp myComp = new Lib.Comp();
Visual Basic
Dim myComp As New Lib.Comp

Punto di ingresso del programma — Tutti i programmi eseguibili devono avere un punto di ingresso esterno, in cui ha inizio l'esecuzione dell'applicazione. Nelle estensioni gestite per C++ la sintassi è identica a quella di C++, mentre in Visual C# e Visual Basic tutto avviene in una classe. Nel codice riportato di seguito si illustra la sintassi nelle estensioni gestite per C++:

void main() {
}

Nel codice riportato di seguito viene illustrata la sintassi in Visual C#:

class MainApp {
   public static void Main() {
   }
}

Nel codice riportato di seguito si illustra la sintassi in Visual Basic:

Public Module modmain
   Sub Main()
   End Sub
End Module

Entrando nel dettaglio, tuttavia, il compilatore delle estensioni gestite per C++ incapsula il punto di ingresso in una classe.

Definizione di uno spazio dei nomi e di una classe — Tutti e tre i linguaggi supportano la creazione di spazi dei nomi personalizzati e di classi all'interno degli spazi dei nomi creati. Tutti e tre i linguaggi, inoltre, gestiscono questo processo nel codice, sebbene con una sintassi leggermente differente. Le estensioni gestite per C++ ad esempio utilizzano una dichiarazione di classe gestita, mentre in Visual C# non occorre utilizzare il punto e virgola (;) alla fine delle dichiarazioni degli spazi dei nomi e delle classi. Nel codice riportato di seguito si illustra la sintassi nelle estensioni gestite per C++:

namespace CompVC {
   __gc class StringComponent {
   public:
      StringComponent() {
      }
   };
};

Nel codice riportato di seguito si illustra la sintassi in Visual C#:

namespace CompCS {
   public class StringComponent {
      public StringComponent() {...}
   }
}

Nel codice riportato di seguito si illustra la sintassi in Visual Basic:

Namespace CompVB
   Public Class StringComponent
      Public Sub New()
      End Sub
   End Class
End Namespace

Vedere anche

Hello World | Scrittura di componenti .NET semplici | Client per i componenti semplici | Riepilogo dell'esercitazione di sviluppo | Appendice A: strumenti per l'esplorazione degli spazi dei nomi