Avalonia solo in codiceEnglish

Volumi

Volume 1 — Il linguaggio C#

Stato: scritto

Volume 1 — Il linguaggio C#

Il C# che serve per scrivere finestre, insegnato da capo: tipi, oggetti, file, JSON e XML, architetture, thread, Task e async, con programmi console che mostrano subito che cosa succede.

18 capitoli · 353 pagine. Si parte dall'installazione dell'SDK di .NET 10 e di Visual Studio Code, passo per passo, e si arriva ai thread misurati, alla condizione di gara vista accadere e al deadlock provocato e risolto, a await spiegato fino alla macchina a stati che genera il compilatore. In mezzo: classi e oggetti, interfacce, delegati ed eventi senza lambda, generici e null, eccezioni, file salvati senza lasciarli mai a metà, JSON e XML, e come si organizza un programma (MVC, MVP, MVVM).

È il volume per chi comincia, e per chi conosce già un linguaggio e vuole C# fatto bene. Le finestre cominciano nel volume 2, che parte da dove questo finisce.

Il primo capitolo installa e spiega Visual Studio Code: un progetto aperto, con Program.cs nell'editor.
Il primo capitolo installa e spiega Visual Studio Code: un progetto aperto, con Program.cs nell'editor.
dotnet run nel terminale dell'editor.
dotnet run nel terminale dell'editor.
Il debugger fermo su un punto d'interruzione, con le variabili.
Il debugger fermo su un punto d'interruzione, con le variabili.

Leggi «Prima di cominciare» Gli esempi del volume

Indice dei capitoli

ParteCapitoliPagine
Prima di cominciare—8
I · Il linguaggio C# e gli strumentiI.1–I.18290
AppendiciA–C40
Totale18 capitoli353

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

  1. 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.
  2. 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.
  3. Tipi, variabili ed espressioni ✔ — tipi e variabili; numeri (int, long, double, decimal); testo e formati; bool e operatori; conversioni e TryParse; var e const; tipi valore e riferimento.
  4. Decisioni, cicli e raccolte ✔ — if, switch, pattern matching; enum; for, foreach, while; array, List, Dictionary, HashSet, Queue, Stack.
  5. Metodi ✔ — dichiarare e chiamare; parametri out, ref, facoltativi, con nome; sovraccarichi; ricorsione; metodi a espressione.
  6. 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.
  7. Ereditarietà, interfacce, polimorfismo ✔ — ereditare; virtual, override, abstract; interfacce; polimorfismo; comporre invece di ereditare.
  8. Delegati ed eventi ✔ — Action, Func; gruppi di metodi; eventi; EventHandler<T>; la piccola classe che ricorda il contesto.
  9. Generici, null ed estensioni ✔ — tipi e metodi generici; vincoli; nullable e analisi del compilatore; metodi d'estensione; le prime estensioni fluenti (quelle di RAVAL).
  10. Errori ed eccezioni ✔ — try/catch/finally; lanciare e definire eccezioni; quando non catturare; IDisposable e using.
  11. 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à.
  12. 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); JsonDocument e JsonNode; JsonException e il percorso; il quaderno in JSON.
  13. XML: documenti fatti di elementi ✔ — dichiarazione, radice, elementi, attributi, commenti, ben formato; entità e CDATA; LINQ to XML: costruire, leggere, modificare; XmlSerializer e i suoi attributi; gli spazi dei nomi; XmlReader per i file enormi; XmlException; XML o JSON; il ricettario.
  14. Organizzare un programma ✔ — il programma tutto in Main; responsabilità, coesione, accoppiamento; strati e cartelle; il modello; MVC, MVP con la vista finta, MVVM con INotifyPropertyChanged; l'iniezione delle dipendenze; Singleton, Strategia, Fabbrica, Archivio, Osservatore, Comando; come scegliere.
  15. 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.
  16. Task: il lavoro come oggetto ✔ — dal thread al task, lo stesso esempio nelle due forme; Task.Run, Task<T> e Result; Wait, WaitAll, WhenAll, WhenAny; continuazioni; le eccezioni e AggregateException; 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, WhenAll e WhenAny.
  17. async e await ✔ — aspettare senza bloccare; await passo per passo; i metodi async Task e async Task<T>; Task.Delay e Thread.Sleep; su quale thread riprende il codice; file e flussi asincroni; async void e perché evitarlo; ValueTask; che cosa genera il compilatore (la macchina a stati). Esempi: la colazione: in fila, con i thread, con await; leggere più file insieme; lo stesso lavoro con Thread, con ContinueWith e con await. Diagrammi: la pila delle chiamate prima e dopo await, il metodo spezzato dal compilatore, chi occupa il thread.
  18. async in pratica ✔ — CancellationToken e i tempi massimi; IProgress<T>; PeriodicTimer; SemaphoreSlim per limitare i lavori insieme; Channel<T> fra chi produce e chi consuma; Parallel.For e Parallel.ForEachAsync; IAsyncEnumerable e await foreach; gli errori classici (.Result che blocca, il task dimenticato, il lock attorno a un await). 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 ✔

Stato dei capitoli: ✔ scritto · ✎ in bozza · ○ da scrivere.

Gli esempi del volume

Volume 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.

Esempi-Volume1.zip 318 kB · italianoSHA-256 4ddb42e11b72cc867151a7f1476e124fa900bb02a6bfb4316730455270be633b

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.

Examples-Volume1.zip 317 kB · EnglishSHA-256 c60b11f75e5d9cdede6ab574a2b2e35e4f74ad7d26901e0061f3e057d906edbd

Licenza MIT. Come si aprono e si avviano: la pagina Esempi. Tutti i volumi in un pacchetto solo: Download.