C# Come Evoluzione del C++

Nonostante le dichiarazioni di Microsoft, il C# ( si pronuncia see sharp ), è molto più vicino al C++ rispetto al Visual Basic. L’intento era quello di mascherare alcuni aspetti della programmazione C++ che costringono lo sviluppatore ad occuparsi di aspetti a basso livello, il tutto ovviamente senza perdere la potenza del linguaggio C++. A supportare questa teoria è il fatto che la maggior parte del .NET framework è stata scritta in C#, ma andiamo con ordine e vediamo le caratteristiche di questo linguaggio.
Una delle prime cose che risaltano nella definizione di questo linguaggio è la semplificazione della sintassi rispetto al C++, ad esempio esiste soltanto un operatore per lavorare con i membri di una classe, struttura o unione, il punto. Sempre nell’ottica della semplificazione del codice è stata eliminata la necessità di specificare l’inclusione degli header delle diverse librerie di sistema ed è stata introdotta la possibilità di fare riferimento alle classi che implementano determinate funzioni. Ad esempio, invece di scrivere:

#include <stdio.h>
#include <stdlib.h>

è possibile far riferimento al namespace di sistema:

using System;

e possiamo così scrivere:

Console.WriteLine(“Ciao Mondo\n”);

Naturalmente la creazione e l’uso di namespace si estende anche al codice scritto dallo sviluppatore, che in questo modo può riutilizzare il codice prodotto.
Il linguaggio C# introduce anche alcune novità riguardo ai tipi di dato, innanzitutto aderisce al CTS ( Common Type System ) del .NET che ogni linguaggio per questa piattaforma deve supportare. Il C++ classico non è compatibile con la piattaforma .NET e per questo Microsoft ha rilasciato le Managed Extensions for C++ per consentire l’uso di questo linguaggio nel .NET framework. Ad esempio il tipo booleano non è più un tipo numerico, ma un tipo autonomo e sono stati introdotti altri tipi nativi come string e decimal ed esiste un solo tipo char di 16 bit. Oltre a questo, il compilatore inizializza automaticamente le variabili ed è stato introdotto il controllo automatico sull’indice degli array, più volte sorgente di errori per i programmatori C++. Per semplificare ulteriormente il lavoro sugli array è stata introdotta l’istruzione foreach analoga a quella di Visual Basic, possiamo così scrivere:

int[] arrVal = { 4, 56, 76, 3, 54 };
foreach (int i in arrVal)
   Console.WriteLine("Il valore è: " + i);

Il linguaggio C# è pienamente orientato agli oggetti, qualsiasi tipo di dato può essere trattato come una classe, sono state mantenute funzionalità come ereditarietà, incapsulamento, polimorfismo ed è stata abbandonata l’ereditarietà multipla. Sono stati abbandonati i concetti di funzioni, variabili e costanti globali in favore dell’uso di membri di classi statiche, infine sono stati sostiuiti i puntatori a funzioni del C++ con i delegates.
Altra rivoluzione importante è l’introduzione del garbage collector che libera il programmatore C++ dal dover gestire direttamente l’allocazione della memoria. Per la gestione degli errori i due linguaggi hanno mantenuto lo stesso approccio, mentre è stato introdotto l’uso del costrutto conditional che consente di eliminare l’uso delle direttive del preprocessore che spesso rendevano illegibile il codice.
C# è fortemente integrato in COM, tanto che ciascun oggetto C# è automaticamente un oggetto COM, infatti non è necessario implementare esplicitamente l’interfaccia IUnknown dato che viene fatto direttamente dal sistema. Anche per utilizzare componenti COM esterni è stata introdotta la parola chiave new, che equivale alla funzione CoCreateInstance().
Tuttavia C# consente anche una retrocompatibilità con il C++, infatti è permesso dichiarare specifici blocchi come unsafe, utilizzare i puntatori ed array nel modo tradizionale ed utilizzare funzioni per la gestione della memoria, in questo modo gli sviluppatori C++ potranno mantenere alcune loro abitudini anche con il C#.

Share
Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.

Recent Posts

Un Abbonamento per Tutti i Software

Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…

1 anno ago

Software di Magazzino Gratuito

MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→

1 anno ago

Mettere il PC in Lock Screen

In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…

3 anni ago

Fare il reset togliendo la corrente

In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…

3 anni ago

Prossimi Aggiornamenti Software

Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…

3 anni ago

Come Eliminare i Files in Windows

Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→

4 anni ago