Hello World et structure d'un programme
Les instructions de premier niveau (depuis .NET 6) vous permettent de sauter la classe standard.
| Élément | Code |
|---|
| Programme de premier niveau | Console.WriteLine("Hello, World!"); |
| Importer un espace de noms | using System; |
| Point d'entrée classique | static void Main(string[] args) { ... } |
| Afficher une ligne | Console.WriteLine("text"); |
| Lire une ligne | string s = Console.ReadLine(); |
| Interpolation de chaîne | Console.WriteLine($"Hi {name}"); |
| Commentaires | // line et /* block */ |
Types de données
| Type | Description |
|---|
int | Entier signé 32 bits |
long | Entier signé 64 bits |
double / float | Nombres à virgule flottante |
decimal | Décimal haute précision (monnaie) |
bool | true ou false |
char | Caractère Unicode unique |
string | Texte immuable |
var | Le compilateur infère le type |
int? | Type valeur nullable |
Variables
| Opération | Syntaxe |
|---|
| Déclarer et initialiser | int x = 5; |
| Inférence de type | var name = "Ada"; |
| Constante | const double Pi = 3.14159; |
| Champ en lecture seule | readonly int id; |
| Référence nullable | string? maybe = null; |
| Coalescence des nuls | var y = maybe ?? "default"; |
| Accès conditionnel nul | int? len = text?.Length; |
Contrôle de flux
| Instruction | Syntaxe |
|---|
| If / else | if (x > 0) { ... } else { ... } |
| Instruction switch | switch (n) { case 1: ...; break; default: ...; } |
| Expression switch | var s = n switch { 1 => "one", _ => "other" }; |
| Boucle while | while (i < n) { ... } |
| Boucle do-while | do { ... } while (i < n); |
| Boucle for | for (int i = 0; i < n; i++) { ... } |
| Boucle foreach | foreach (var item in list) { ... } |
| Break / continue | break; sort d'une boucle, continue; passe à l'itération suivante |
Méthodes
| Opération | Syntaxe |
|---|
| Définir une méthode | int Add(int a, int b) { return a + b; } |
| Corps d'expression | int Add(int a, int b) => a + b; |
| Sans valeur de retour | void Greet() { ... } |
| Paramètre optionnel | int Pow(int b, int e = 2) { ... } |
| Arguments nommés | Pow(b: 2, e: 3); |
| Paramètre out | bool TryParse(string s, out int n) { ... } |
| Méthode statique | static int Square(int x) => x * x; |
| Expression lambda | Func<int, int> f = x => x * 2; |
Classes et POO
| Opération | Syntaxe |
|---|
| Définir une classe | class Dog { ... } |
| Propriété automatique | public string Name { get; set; } |
| Propriété en lecture seule | public int Id { get; } |
| Constructeur | public Dog(string name) { Name = name; } |
| Créer un objet | var d = new Dog("Rex"); |
| Héritage | class Puppy : Dog { ... } |
| Interface | interface IRunnable { void Run(); } |
| Redéfinir une méthode | public override void Speak() { ... } |
| Record (immuable) | record Point(int X, int Y); |
Collections
Collections génériques de System.Collections.Generic.
| Type | Usage et exemple |
|---|
List<T> | Tableau dynamique : list.Add(1); list.Count; |
Dictionary<K, V> | Clé-valeur : dict["a"] = 1; dict.ContainsKey("a"); |
HashSet<T> | Valeurs uniques : set.Add(5); set.Contains(5); |
Queue<T> | FIFO : q.Enqueue(x); q.Dequeue(); |
Stack<T> | LIFO : s.Push(x); s.Pop(); |
| Tableau | int[] nums = { 1, 2, 3 }; |
| Initialiseur de collection | var l = new List<int> { 1, 2, 3 }; |
| Parcourir un dictionnaire | foreach (var kv in dict) { kv.Key; kv.Value; } |
LINQ
Interroger les collections de façon fluide ; de System.Linq.
| Opération | Syntaxe |
|---|
| Filtrer | nums.Where(n => n > 0) |
| Projeter / mapper | nums.Select(n => n * 2) |
| Trier | nums.OrderBy(n => n) / OrderByDescending(...) |
| Première correspondance | nums.First(n => n > 5) / FirstOrDefault(...) |
| Any / all | nums.Any(n => n < 0) / nums.All(n => n > 0) |
| Compter les correspondances | nums.Count(n => n > 0) |
| Agréger | nums.Sum(), nums.Max(), nums.Average() |
| Regrouper par | items.GroupBy(i => i.Category) |
| Matérialiser | .ToList() / .ToArray() |
Schémas courants (propriétés, async)
| Schéma | Syntaxe |
|---|
| Méthode async | async Task<int> GetAsync() { ... } |
| Attendre une tâche | var result = await GetAsync(); |
| Try / catch | try { ... } catch (Exception e) { ... } |
| Finally | finally { ... } s'exécute toujours |
| Using (libération) | using var file = File.OpenRead(path); |
| Formatage de chaîne | $"Total: {amount:C}" |
| Classe générique | class Box<T> { public T Value; } |
| Filtrage par motif | if (obj is Dog d) { d.Bark(); } |
La syntaxe C#, les collections et les requêtes LINQ que vous utilisez le plus, sur une seule page. Cet aide-mémoire C# est une référence rapide pour écrire du C# - les types de données, le contrôle de flux, les classes, les collections List/Dictionary, LINQ, ainsi que les schémas de propriétés et d'async qui définissent un code .NET idiomatique.
Tout ce qui figure ici est du C# standard sur .NET et s'exécute avec la CLI dotnet. Copiez ce dont vous avez besoin, ou essayez n'importe quel extrait en direct dans le playground C# - aucun SDK à installer.