Skip to main content

Fonctionnalités syntaxiques

Inférence de type

C# supporte l'inférence de type pour les variables locales avec le mot clé var, exemple :

var hello = "Hello world";

A utiliser uniquement lorsque le type est évident (constructor ou littéral).

Interpolation de chaine

C# supporte l'interpolation de chaine avec $, exemple :

var firstName = "John";
var lastName = "Shepard"
var fullName = $"{firstName} {lastName}";
Console.WriteLine(fullName); // Prints John Shepard

Opérateurs ? et ??

Nullabilité

Un type suivi de ? signfie que le type est nullable. En cas d'assignation de null à un type qui n'est pas déclaré comme nullable, le compilateur produit un warning. Exemple :


int nonNullableNumber= 42;
nonNullableNumber = null; // warning de compilation

int? nullableNumber = 42;
nullableNumber = null; // pas de warning de compilation

Ternaires

decimal ticketPrice = age >= 18 ? 10 : 6;

Equivalent :

decimal ticketPrice;
if(age >= 18){
  ticketPrice = 10;
} else {
  ticketPrice = 6
}

Accès conditionné par null

Permet de conditionner l'accès à un champs ou l'appel d'une méthode par la non présence d'une valeur null sur la référence sur laquelle on effecture l'appel. Exemple :

User? user = GetUser();
string? name = user.user?.Name;

Equivalent :

User? user = GetUser();
string? name;

if(user is not null){
	name = User.Name;
}

null-coallescing

Valeur de repli en cas de valeur null :

User?User user = GetUser();
string name = user.Name ?? new User("John"John Shepard");

Equivalent :

User? usertemp = GetUser();

string?User name;user;
if(usertemp is not null){
	nameuser = User.Name;temp;
} else {
  	user = new User("John Shepard");
}

Méthodes "Expression Body"

public class Point2D {
	private int x;
    private int y;
    
    public Point2D(int x, int y){
    	this.x = x;
        this.y = y;
    }
    
    public Point Move(int distanceX, int distanceY) => new Point(x + distanceX, y + distanceY);
}

Intialisation

Propriétés d'objets

var employee = new Employee{ FirstName = "John", LastName = "Shepard"};

Equivalent :

var employee = new Employee();
employee.FirstName = "John";
employeeLastName = "Shepard";

Collections

Listes / Tableaux

var list = new List<string> { "Item1", "Item2", "Item3" }

Dictionnaires

var map = new Dictionnary<int,string> { 
  [42] = "Item1", 
  [41] = "Item2", 
  [123] = "Item3" 
}