HTML CSS JAVASCRIPT SQL MYSQL PYTHON JAVA PHP C C++ C# PACKET TRACER CYBERSECURITY REACTTYPESCRIPTNODE.JSGIT & GITHUBDATA SCIENCEBOOTSTRAPGOKOTLINJQUERYDJANGOVUEANGULAR MONGODB POSTGRESQL SASS NUMPY PANDAS SCIPY DSA RUST SWIFT BASHXMLW3.CSSANGULARJSAIAWSPROGRAMMAZIONEEXCEL WORD POWERPOINT
Corso gratuito

Corso di C# in italiano

Il tutorial completo per imparare C# da zero: il linguaggio moderno di Microsoft per app desktop, web (ASP.NET) e videogiochi con Unity. Esempi spiegati passo passo.

Introduzione a C# e .NET

C# (si pronuncia “C sharp”) è un linguaggio moderno, orientato agli oggetti, creato da Microsoft nel 2000. Gira sulla piattaforma .NET, che fornisce un'enorme libreria e permette di sviluppare applicazioni Windows, web (ASP.NET), mobile (MAUI) e videogiochi con il motore Unity.

C# unisce la potenza di C++ alla semplicità e sicurezza di linguaggi come Java: è fortemente tipizzato, ha la garbage collection automatica (gestione della memoria) ed è uno dei linguaggi più richiesti nel mondo del lavoro.

📌 C# non si esegue nel browser: serve il .NET SDK. In questo corso gli esempi si leggono e si modificano con la sintassi colorata.
Esempio

Sintassi e primo programma

Un programma C# è organizzato in classi e parte dal metodo Main. La direttiva using importa i namespace (qui System, che contiene Console). Le istruzioni terminano con ;.

Esempio

Output: Console.WriteLine

Console.WriteLine() stampa e va a capo; Console.Write() stampa senza andare a capo. Con le stringhe interpolate (prefisso $) inserisci variabili tra graffe.

Esempio

I commenti

Esempio

Le variabili

Ogni variabile va dichiarata con il suo tipo: tipo nome = valore;. La parola chiave var deduce il tipo automaticamente; const crea una costante.

Esempio

I tipi di dato

TipoDescrizioneEsempio
intIntero42
doubleDecimale3.14
charCarattere'A'
boolVero/falsotrue
stringTesto"ciao"

Il casting (conversione di tipo)

Si converte un tipo in un altro con il cast esplicito (tipo) o con i metodi Convert.ToInt32(), int.Parse(), .ToString().

Esempio

Gli operatori

Esempio

L'input dell'utente

Si legge dalla tastiera con Console.ReadLine() (restituisce sempre una stringa: converti se serve un numero).

Esempio

Math in C#

La classe Math fornisce funzioni matematiche e costanti.

Esempio

Le stringhe

La classe string offre molti metodi: .Length, .ToUpper(), .Substring(), .Replace(), .Contains().

Esempio

Booleans in C#

Il tipo bool assume i valori true o false. È il risultato di tutte le espressioni di confronto e la base delle condizioni.

Esempio

Le condizioni: if, else if, else

Esempio

Il costrutto switch

Esempio

Il ciclo while

Esempio

Il ciclo for e foreach

Esempio

Break e Continue

break interrompe il ciclo; continue salta all'iterazione successiva.

Esempio

Gli array

Esempio

Le List

La List<T> è una lista dinamica (a dimensione variabile) del namespace System.Collections.Generic.

Esempio

I metodi

Un metodo raggruppa codice riutilizzabile, con tipo di ritorno, nome e parametri. void = nessun ritorno; static = chiamabile senza creare un oggetto.

Esempio

Parametri dei metodi

I metodi ricevono dati tramite i parametri. C# supporta parametri di default, ref (per riferimento), out (valori in uscita) e params (numero variabile).

Esempio

Overloading dei metodi

C# permette più metodi con lo stesso nome ma parametri diversi (tipo o numero). Il compilatore sceglie quello giusto in base agli argomenti.

Esempio

Programmazione a oggetti (OOP)

C# è interamente orientato agli oggetti. Tutto è organizzato in classi e oggetti; i pilastri sono incapsulamento, ereditarietà, polimorfismo e astrazione.

📦 Una classe è lo “stampo”, gli oggetti sono i prodotti creati da quello stampo.

Classi e oggetti

Una classe definisce attributi e metodi. Con new si crea un oggetto.

Esempio

Membri di classe

I membri di una classe sono i campi (variabili), i metodi (funzioni) e le proprietà. I membri static appartengono alla classe, non alle singole istanze.

Esempio

Le proprietà

Le proprietà sono il modo elegante di C# per l'incapsulamento: combinano un campo privato con un getter e un setter, con la sintassi compatta { get; set; }.

Esempio

Modificatori d'accesso

I modificatori d'accesso controllano la visibilità di classi e membri.

ModificatoreAccessibile da
publicOvunque
privateSolo dalla classe stessa (default)
protectedDalla classe e dalle derivate
internalDallo stesso assembly (progetto)
Esempio

I costruttori

Il costruttore ha lo stesso nome della classe e inizializza l'oggetto. this indica l'oggetto corrente.

Esempio

L'ereditarietà

Una classe eredita da un'altra con i due punti :. base richiama il genitore.

Esempio

Il polimorfismo

Con virtual (genitore) e override (figlia) una sottoclasse ridefinisce il comportamento di un metodo.

Esempio

Astrazione (classi astratte)

L'astrazione nasconde i dettagli implementativi ed espone solo l'essenziale. Una abstract class non può essere istanziata e può contenere metodi astratti (senza corpo) che le classi derivate devono implementare.

Esempio
📌 Una classe astratta può avere sia metodi astratti (da implementare) sia metodi concreti (già implementati). Non può essere istanziata direttamente.

Le interfacce

Un'interfaccia definisce un contratto di metodi che le classi devono implementare. Per convenzione il nome inizia con la “I”.

Esempio

Enum

Un enum definisce un insieme di costanti con nomi leggibili. Utile per stati, giorni, livelli e categorie.

Esempio

Gestione file in C#

La classe File (namespace System.IO) permette di creare, scrivere e leggere file con metodi statici molto semplici.

Scrivere e leggere
MetodoDescrizione
File.WriteAllText()Scrive (sovrascrive) testo
File.AppendAllText()Aggiunge testo in coda
File.ReadAllText()Legge tutto il contenuto
File.ReadAllLines()Legge le righe in un array
File.Exists()Verifica se il file esiste
File.Delete()Elimina il file

La gestione delle eccezioni

Gli errori a runtime si gestiscono con try ... catch (e l'opzionale finally), per evitare il crash del programma.

Esempio

Esempi pratici C#

Esempi reali e completi per consolidare C# con OOP e collezioni.

Gestione voti con List

Esempio

Classe ContoBancario

Esempio

Editor online C#

Scrivi e leggi codice C# con la sintassi colorata. Per eseguirlo installa il .NET SDK (o usa .NET Fiddle), crea un progetto con dotnet new console ed esegui con dotnet run.

Il tuo codice C#

Quiz C# — verifica le tue conoscenze

  1. Cos'è il .NET?
    Risposta: Una piattaforma di sviluppo open source di Microsoft che esegue C#. Comprende il runtime (CLR), le librerie di base e gli strumenti di compilazione.
  2. Differenza tra == ed .Equals() per le stringhe?
    Risposta: Per le stringhe in C# entrambi confrontano il contenuto. Per gli oggetti, == confronta i riferimenti se non è sovrascritto.
  3. Cosa sono le proprietà (properties)?
    Risposta: Membri che combinano un campo con i metodi get e set, permettendo accesso controllato con sintassi da campo.
  4. Differenza tra classe astratta e interfaccia?
    Risposta: La classe astratta può avere implementazioni e stato; l'interfaccia definisce solo contratti. Una classe eredita da una sola classe ma implementa più interfacce.
  5. Cos'è il garbage collector?
    Risposta: Il componente del CLR che libera automaticamente la memoria degli oggetti non più referenziati, evitando i memory leak.

Esercizi C# con soluzioni

Cinque esercizi con soluzione completa. Provaci prima di guardare!

Esercizio 1 — FizzBuzz

Soluzione

Esercizio 2 — Numero primo

Soluzione

Esercizio 3 — Inversione stringa

Soluzione

Esercizio 4 — Classe Studente

Soluzione

Esercizio 5 — Conta parole con Dictionary

Soluzione

Sfide C#

  1. 🟢 Crea una classe Temperatura con proprietà per Celsius e Fahrenheit che si convertono automaticamente.
  2. 🟡 Implementa una rubrica con Dictionary e menu console (aggiungi, cerca, elimina contatti).
  3. 🟡 Realizza una gerarchia Veicolo → Auto/Moto/Camion con metodo virtuale e polimorfismo.
  4. 🔴 Crea un'interfaccia IForma con metodo Area() implementata da Cerchio, Rettangolo e Triangolo, e usa LINQ per trovare la più grande.
  5. 🔴 Implementa un sistema di gestione biblioteca con classi, eccezioni custom e salvataggio su file.

Progetti pratici con C#

  • 🎮 Gioco con Unity: C# è il linguaggio ufficiale del motore Unity
  • 🖥️ App desktop WPF/WinForms: interfacce grafiche con .NET
  • 🌐 Web API con ASP.NET Core: backend REST moderno e performante
  • 🏦 Gestionale console: magazzino o banca con OOP e persistenza file
  • 📊 Analisi dati con LINQ: lettura CSV, statistiche e query fluenti
  • 🤖 Bot Discord/Telegram: integrazione API con C# e .NET

Programma completo del corso C#

ModuloArgomentiOre
1 — BasiInstallazione .NET SDK, Console, variabili, tipi, casting, operatori, math6
2 — ControlloBooleans, if/else, switch, while, for, break/continue4
3 — CollezioniArray, List, stringhe4
4 — MetodiMetodi, parametri, overloading5
5 — OOP baseClassi, membri, costruttori, modificatori, proprietà7
6 — OOP avanzatoEreditarietà, polimorfismo, astrazione, interfacce, enum7
7 — File ed erroriFile, eccezioni, gestione errori4
8 — ProgettoApplicazione completa (console, WPF o Unity)8

Piano di studio C# (8 settimane)

SettimanaObiettivo
1Installazione .NET SDK, Console, variabili, tipi, casting, operatori
2Math, booleans, if/else, switch, cicli, break/continue
3Array, List, stringhe e relativi metodi
4Metodi, parametri, overloading
5OOP: classi, membri, costruttori, modificatori, proprietà
6Ereditarietà, polimorfismo, astrazione, interfacce
7Enum, file, eccezioni
8LINQ, progetto finale

Domande da colloquio C#

  • 💬 Differenza tra class e struct? — Le classi sono reference type (allocate sull'heap); le struct sono value type (sullo stack). Le struct si copiano per valore.
  • 💬 Cos'è il boxing/unboxing? — Boxing converte un value type in object (heap); unboxing fa il contrario. Operazioni costose da evitare nei loop.
  • 💬 Cosa sono i delegate? — Tipi che rappresentano riferimenti a metodi, base per eventi e callback (simili ai puntatori a funzione).
  • 💬 Cos'è LINQ? — Language Integrated Query: permette di interrogare collezioni, database e XML con sintassi fluente e leggibile.
  • 💬 Differenza tra IEnumerable e List?IEnumerable è l'interfaccia base per l'iterazione (lazy); List è una collezione concreta con accesso casuale.
  • 💬 Cosa fa async/await? — Permette la programmazione asincrona non bloccante, fondamentale per operazioni I/O e web.

Riferimento — Parole chiave C#

KeywordUso
class, struct, interfaceDefiniscono tipi
public, private, protected, internalModificatori d'accesso
staticMembro di classe (non di istanza)
abstract, virtual, override, sealedPolimorfismo ed ereditarietà
get, setAccessori delle proprietà
newCrea un'istanza
this, baseIstanza corrente / classe base
usingImporta namespace / gestione risorse
namespaceRaggruppa tipi correlati
try, catch, finally, throwGestione eccezioni
varTipo dedotto automaticamente
async, awaitProgrammazione asincrona

Riferimento — Metodi String

MetodoDescrizioneEsempio
LengthLunghezza"C#".Length → 2
ToUpper() / ToLower()Maiuscolo / minuscolo"c#".ToUpper() → "C#"
Trim()Rimuove spazi ai lati" hi ".Trim() → "hi"
Substring(i, n)Sottostringa"Csharp".Substring(0,1) → "C"
Replace(a, b)Sostituisce"aaa".Replace("a","b") → "bbb"
Contains(s)Contiene?"C#".Contains("#") → true
IndexOf(s)Posizione"Csharp".IndexOf("s") → 1
Split(c)Divide in array"a,b".Split(',') → ["a","b"]
StartsWith/EndsWithInizia/finisce con?"C#".StartsWith("C") → true
string.Join()Unisce con separatorestring.Join("-", arr)
string.Format() / $""Interpolazione$"Ciao {nome}"

Riferimento — Metodi Math

MetodoDescrizioneEsempio
Math.Abs()Valore assolutoMath.Abs(-5) → 5
Math.Max() / Min()Massimo / minimoMath.Max(3,7) → 7
Math.Pow()PotenzaMath.Pow(2,10) → 1024
Math.Sqrt()Radice quadrataMath.Sqrt(16) → 4
Math.Round()ArrotondaMath.Round(3.5) → 4
Math.Floor() / Ceiling()Difetto / eccessoMath.Floor(4.9) → 4
Math.PIPi grecoMath.PI → 3.14159
Math.Sin/Cos/Tan()TrigonometriaMath.Sin(0) → 0
new Random().Next()Numero casualernd.Next(1, 100)

Riferimento — Metodi List

MetodoDescrizione
Add(x)Aggiunge un elemento
AddRange(c)Aggiunge più elementi
Remove(x) / RemoveAt(i)Rimuove per valore / indice
CountNumero di elementi
Contains(x)Verifica presenza
IndexOf(x)Posizione di un elemento
Sort()Ordina la lista
Reverse()Inverte l'ordine
Clear()Svuota la lista
Find() / FindAll()Cerca con un predicato
Average() / Max() / Min() / Sum()Statistiche (LINQ)
Where() / Select()Filtra / trasforma (LINQ)

Certificazione C#

Microsoft offre certificazioni ufficiali apprezzate dalle aziende che sviluppano in .NET:

CertificazioneEnteLivello
Microsoft Certified: Azure Developer AssociateMicrosoftProfessionale (cloud + C#)
Foundational C# with MicrosoftMicrosoft / freeCodeCampBase (gratuita)
C# CertificationW3SchoolsBase
Unity Certified ProgrammerUnityGame dev con C#

Come prepararsi

  • 📚 Studia su Microsoft Learn (gratuito e ufficiale)
  • 💻 Pratica con progetti reali: console, WPF, ASP.NET Core, Unity
  • 🛠️ Impara Visual Studio / VS Code e il .NET CLI
  • 📖 Approfondisci LINQ, async/await e i pattern OOP
  • ⏱️ La certificazione gratuita "Foundational C#" è un ottimo punto di partenza

Conclusione — E ora?

Hai completato il corso di C#! Hai imparato la sintassi, l'OOP completa (classi, proprietà, ereditarietà, polimorfismo, astrazione, interfacce), gli enum, i file e la gestione delle eccezioni. Sei pronto per costruire applicazioni reali con .NET.

E ora cosa fare?

  • 💻 Installa il .NET SDK e Visual Studio (o VS Code) per sviluppare in locale
  • 🎮 Prova Unity — C# è il linguaggio ufficiale per creare videogiochi
  • 🌐 Studia ASP.NET Core per il backend web e le Web API
  • 📖 Approfondisci LINQ e async/await, fondamentali nel C# moderno
  • 🐙 Pubblica i progetti su GitHub per il tuo portfolio
  • 🎯 Punta alla certificazione Microsoft (gratuita "Foundational C#")
🎯 La tua sfida finale

Realizza un'applicazione console che gestisce un elenco di studenti (nome e voti) con classi e proprietà. Calcola la media della classe, mostra chi è promosso, ordina per media con LINQ e salva i risultati in un file di testo.

✏️ Provalo tu — leggi e modifica il codice C#
Anteprima