
Status: written
Volume 1 — The C# Language
The C# you need to write windows, taught from the beginning: types, objects, files, JSON and XML, architectures, threads, Task and async, with console programs that show straight away what happens.
18 chapters · 353 pages. It starts from installing the .NET 10 SDK and Visual Studio Code, step by step, and gets to measured threads, a race condition seen happening, a deadlock caused and solved, and await explained down to the state machine the compiler generates. In between: classes and objects, interfaces, delegates and events without lambdas, generics and null, exceptions, files saved without ever leaving them half written, JSON and XML, and how to organize a program (MVC, MVP, MVVM).
It is the volume for beginners, and for those who know a language and want C# done properly. Windows begin in volume 2, which starts where this one ends. The English edition of this volume is in preparation, and its examples are already in English.



Table of contents
The table of contents is in Italian, as the volume is written in Italian; the English edition follows.
| Parte | Capitoli | Pagine |
|---|---|---|
| Prima di cominciare | — | 8 |
| I · Il linguaggio C# e gli strumenti | I.1–I.18 | 290 |
| Appendici | A–C | 40 |
| Totale | 18 capitoli | 353 |
Prima di cominciare ✔
Prefazione · la collana · A chi è rivolto · Come è fatto il libro e i percorsi di lettura · Le regole della casa · Gli strumenti e il codice degli esempi · Convenzioni tipografiche.
Parte prima — Il linguaggio C# e gli strumenti
- Dal sorgente al programma ✔ — cos'è un programma; .NET: runtime, librerie, SDK; installare SDK ed editor passo per passo; il terminale;
dotnet new,build,run; progetto e soluzione; il primo programma; leggere gli errori; il debugger. - Visual Studio Code: l'ambiente di lavoro ✔ — la finestra; le estensioni; la cartella di lavoro con la soluzione;
settings.json,.editorconfig,tasks.json,launch.json; IntelliSense, correzioni, rinomina; terminale integrato e Git; le scorciatoie; il ciclo di lavoro. - Tipi, variabili ed espressioni ✔ — tipi e variabili; numeri (
int,long,double,decimal); testo e formati;boole operatori; conversioni eTryParse;vareconst; tipi valore e riferimento. - Decisioni, cicli e raccolte ✔ —
if,switch, pattern matching;enum;for,foreach,while; array,List,Dictionary,HashSet,Queue,Stack. - Metodi ✔ — dichiarare e chiamare; parametri
out,ref, facoltativi, con nome; sovraccarichi; ricorsione; metodi a espressione. - Classi e oggetti ✔ — pensare a oggetti: stato, comportamento, identità, i quattro principi, come si trovano le classi; campi e incapsulamento; proprietà; costruttori;
static;sealed,readonly; record; ciclo di vita e garbage collector; oggetti che lavorano insieme (possedere e indicare); i dati di tutto il programma in una classe statica, il costruttore statico e lo stato globale. - Ereditarietà, interfacce, polimorfismo ✔ — ereditare;
virtual,override,abstract; interfacce; polimorfismo; comporre invece di ereditare. - Delegati ed eventi ✔ —
Action,Func; gruppi di metodi; eventi;EventHandler<T>; la piccola classe che ricorda il contesto. - Generici, null ed estensioni ✔ — tipi e metodi generici; vincoli; nullable e analisi del compilatore; metodi d'estensione; le prime estensioni fluenti (quelle di RAVAL).
- Errori ed eccezioni ✔ —
try/catch/finally; lanciare e definire eccezioni; quando non catturare;IDisposableeusing. - File e testo ✔ —
File,Path,Directory; flussi e codifiche; cartelle per utente; le eccezioni dei file; il quaderno di note in un file CSV, salvato senza mai lasciarlo a metà. - JSON: i dati in un testo ✔ — le regole e i sei tipi di valore; gli array (di numeri, di testi, di oggetti, di array) e che cosa diventano in C#;
JsonSerializer; array di oggetti e oggetti annidati;[JsonIgnore],[JsonPropertyName]; le opzioni (nomi, enum,null, lettere accentate);JsonDocumenteJsonNode;JsonExceptione il percorso; il quaderno in JSON. - XML: documenti fatti di elementi ✔ — dichiarazione, radice, elementi, attributi, commenti, ben formato; entità e CDATA; LINQ to XML: costruire, leggere, modificare;
XmlSerializere i suoi attributi; gli spazi dei nomi;XmlReaderper i file enormi;XmlException; XML o JSON; il ricettario. - Organizzare un programma ✔ — il programma tutto in
Main; responsabilità, coesione, accoppiamento; strati e cartelle; il modello; MVC, MVP con la vista finta, MVVM conINotifyPropertyChanged; l'iniezione delle dipendenze; Singleton, Strategia, Fabbrica, Archivio, Osservatore, Comando; come scegliere. - Thread: più lavori insieme ✔ — che cos'è un thread e che cosa fa il sistema operativo;
Thread,Start,Join,Sleep; passare dati a un thread e riaverne il risultato; primo piano e sfondo;ThreadPool; i dati condivisi: la condizione di gara vista accadere,lock,Interlocked; il deadlock provocato e risolto; quanto costa un thread. Esempi: il download finto in tre thread; il contatore che sbaglia e quello che non sbaglia; due thread che si aspettano per sempre. Diagrammi: linee del tempo dei thread, lo stato condiviso, il deadlock. - Task: il lavoro come oggetto ✔ — dal thread al task, lo stesso esempio nelle due forme;
Task.Run,Task<T>eResult;Wait,WaitAll,WhenAll,WhenAny; continuazioni; le eccezioni eAggregateException; lo stato di un task; perché il pool e non un thread per lavoro. Esempi: calcoli in parallelo con thread e con task a confronto; il primo che risponde; l'errore in un task che nessuno guarda. Diagrammi: thread e task sulla stessa linea del tempo,WhenAlleWhenAny. - async e await ✔ — aspettare senza bloccare;
awaitpasso per passo; i metodiasync Taskeasync Task<T>;Task.DelayeThread.Sleep; su quale thread riprende il codice; file e flussi asincroni;async voide perché evitarlo;ValueTask; che cosa genera il compilatore (la macchina a stati). Esempi: la colazione: in fila, con i thread, conawait; leggere più file insieme; lo stesso lavoro conThread, conContinueWithe conawait. Diagrammi: la pila delle chiamate prima e dopoawait, il metodo spezzato dal compilatore, chi occupa il thread. - async in pratica ✔ —
CancellationTokene i tempi massimi;IProgress<T>;PeriodicTimer;SemaphoreSlimper limitare i lavori insieme;Channel<T>fra chi produce e chi consuma;Parallel.ForeParallel.ForEachAsync;IAsyncEnumerableeawait foreach; gli errori classici (.Resultche blocca, il task dimenticato, illockattorno a unawait). Esempi: lo scaricatore con annullamento e avanzamento; produttore e consumatore con thread e con canale; elaborare cento file quattro alla volta. Diagrammi: l'annullamento che si propaga, il canale, il semaforo.
Appendici
A. Riferimento rapido ✔ · B. Come sono fatte le figure ✔ · C. Glossario ✔
Chapter status: ✔ written · ✎ draft · ○ to be written.
The examples of the volume
Volume 1 — The C# Language volume 1
The examples of 18 chapters (230 files) and the RAVAL library c8a811e, MIT license. Book c73d832b, 6 November 2026.
SHA-256 c60b11f75e5d9cdede6ab574a2b2e35e4f74ad7d26901e0061f3e057d906edbdVolume 1 — Il linguaggio C# volume 1
Gli esempi di 18 capitoli (229 file) e la libreria RAVAL c8a811e, licenza MIT. Libro c73d832b, 6 novembre 2026.
SHA-256 4ddb42e11b72cc867151a7f1476e124fa900bb02a6bfb4316730455270be633bMIT license. How to open and run them: the Examples page. All the volumes in one package: Download.