Principali differenze tra C# e VB.NET

Un linguaggio di programmazione è un linguaggio formale che specifica un insieme di istruzioni che possono essere usate per produrre dati in output. Di solito si utilizza per il controllo del comportamento di una macchina.

Esistono moltissimi linguaggi di programmazione, ognuno differente dall’altro, che possono essere suddivisi in diverse categorie di linguaggi:

  • imperativi: propongono comandi per la manipolazione del contenuto della memoria e le operazioni da eseguire in modo arbitrario. Ogni elemento presente lascia traccia nella memoria centrale;
  • funzionali: danno dei comandi che calcolano risultati partendo dai dati di ingresso e non consentono che le funzioni modifichino la memoria del computer;
  • dichiarativi: descrivono oggetti informatici come la struttura di un database e la sequenza delle loro dichiarazioni non è relazionata al tempo;
  • procedurali: permettono di generare operazioni di alto livello scomponendole in procedure o funzioni;
  • logici: consentono di ideare sistemi matematici logici;
  • orientati agli oggetti: semplificano le realizzazione di schemi predefiniti tramite i quali le problematiche standard della programmazione trovano soluzioni standardizzate.

Un’ulteriore suddivisione va fatta tra linguaggio interpretato, compilato o JIT. Nel primo caso il sorgente viene direttamente interpretato da un software. Nel secondo caso un software compilatore legge il sorgente e lo rende eseguibile. Nel terzo caso, invece, il linguaggio è compilato in modo tale da poter essere eseguito da una macchina virtuale.

Nel nostro caso consideriamo i linguaggi C# e VB.NET. Sono entrambi linguaggi orientati agli oggetti ed entrambi compilati (anche se in verità C# è un ibrido tra compilato e JIT, poiché viene compilato in run time a seconda della macchina dove viene eseguito). Sono due tra i molti linguaggi disponibili per la piattaforma .NET.

Oltre ad una differenza nelle possibilità di programmazione che offrono i due linguaggi, differiscono anche per la sintassi utilizzata:

  • VB.NET risulta essere più lungo rispetto all’equivalente in C#;
  • C# è case sensitive, mentre VB.NET no;
  • in C# ogni istruzione deve terminare con “;” per poter essere eseguita, cosa non necessaria in VB.NET;
  • in C# si usano le parentesi graffe per delimitare i blocchi di codice, mentre in VB.NET si termina  un blocco con la dichiarazione End;
  • in C# è necessario inizializzare le variabili, mentre VB.NET le inizializza direttamente in fase di dichiarazione.

Un esempio nella differenza tra i due linguaggi la sua apprezzare nei due seguenti codice. Entrambi servono per la costruzione del famoso programma “Hello World!”, il primo però utilizza il linguaggio C#, mentre il secondo VB.NET.

Il codice in C# risulta essere:

  using System.Windows.Forms;

  class HelloWorldApp
  {
    public static void Main()
    {
      MessageBox.Show("Hello World");
    }
  }

Mentre quello in VB.NET è:

Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click

   MessageBox.Show("Hello, world!", "Titolo esempio", MessageBoxButtons.OK, MessageBoxIcon.Information)

End Sub

Entrambi i programmi servono per stampare il testo “Hello world!” in una Message Box

Anche i tipi di variabili, e il loro codice, differiscono a seconda del linguaggio utilizzato.

In C# esistono due generi di tipi: tipi valore e tipi riferimento. Le variabili dei tipi valore contengono direttamente i propri dati, mentre le variabili dei tipi riferimento archiviano i riferimenti ai propri dati, noti come oggetti.

I tipi valore di C# sono ulteriormente suddivisi in tipi semplici, tipi enum, tipi struct e tipi valore nullable. I tipi riferimento di C# sono ulteriormente suddivisi in tipi classe, tipi interfaccia, tipi matrice e tipi delegato.

  • Tipi valore
    • Tipi semplici
      • Signed Integer: sbyteshortint,long
      • Unsigned Integer: byteushortuint,ulong
      • Caratteri Unicode: char
      • File binario IEEE a virgola mobile: floatdouble
      • Decimale ad alta precisione a virgola mobile: decimal
      • Booleano: bool
    • Tipi enum
      • Tipi definiti dall’utente nel formato enum E {...}
    • Tipi struct
      • Tipi definiti dall’utente nel formato struct S {...}
    • Tipi valore nullable
      • Estensioni di tutti gli altri tipi valore con un valore null
  • Tipi riferimento
    • Tipi classe
      • Classe di base principale di tutti gli altri tipi: object
      • Stringhe Unicode: string
      • Tipi definiti dall’utente nel formato class C {...}
    • Tipi interfaccia
      • Tipi definiti dall’utente nel formato interface I {...}
    • Tipi di matrice
      • Unidimensionale e multidimensionale, ad esempio int[] e int[,]
    • Tipi delegato
      • Tipi definiti dall’utente nel formato delegate int D(...)

Le variabili in VB.NET sono sostanzialmente le stesse, ma differiscono per la sintassi utilizzata nella definizione della variabile. Ad esempio in VB.NET si ha  Doubleinvece di double, Integerinvece di intSingle invece di float e Boolean invece di bool.

Un’altra importante differenza riguarda gli operatori nei due linguaggi. Infatti la sintassi è diversa, sopratutto per quanto riguarda gli operatori logici. Per semplicità, il confronto è riportato nella tabella qui sotto:

OperatoreVB.NETC#
Operatori Aritmetici
Addizione++
Sottrazione
Moltiplicazione**
Divisione/ (divisione decimale)
\ (divisione intera)
/
ModuloMod%
Potenza^Funzione
Math.pow
Incremento= ++ +
Decremento= –– –
Operatori Logici
andAnd&&
orOr||
notNot!

Lascia un commento