C# 11

C# 11 est la dernière version du langage phare de Microsoft. Annoncée en novembre 2022, elle apporte de nombreuses nouveautés et améliorations pour augmenter la productivité des développeurs. Dans cet article, nous allons examiner celles que je considère comme les plus importantes.

Le mot clé file

Le mot clé file permet de limiter l’étendue et la visibilité d’un type au fichier dans lequel il est créé. Cela éviter les collisions qu’on peut avoir lorsqu’on crée plusieurs types avec le même nom. On peut même créer d’autres types avec le même nom dans notre assembly.

La syntaxe est la suivante:

file class MyClass
{
    // implementation
}

Le modificateur required

Lorsque le mot clé required est devant une propriété cela signifie que celle-ci doit être définie lors de l’initialisation de l’objet. Il peut être utilisé dans les classes ou les structures.

Avec la classe Person suivante par exemple:

public class Person
{
    public required string  FirstName {get; set;}
    public string LastName { get; set; }
    public DateTime BirthDate { get; set; }

}

L’écriture suivante est incorrecte:

var p = new Person();

Il faut obligatoirement définir la propriété FirstName à l’initialisation:

var p = new Person() { FirstName = "toto"};

Les attributs génériques

Dans cette nouvelle version, il est désormais possible de créer des classes d’attribut génériques. On peut donc définir notre classe d’attribut et fixer un type dans sa définition.

Avant, c# 11, il fallait passer un type au constructeur de l’attribut:

public class OldAttribute : Attribute
{
    public Type ParamType { get; }

    public OldAttribute(Type t) => ParamType = t;
}

Cet attribut était ensuite utilisé de la sorte:

[OldAttribute(typeof(string))]
public double Method() => 0;

Avec C# 11, la syntaxe est la suivante:

public class GenericAttribute<T> : Attribute { }

Ce code s’utilise ainsi:

[GenericAttribute<string>()]
public bool Method() => true;

Les motifs de liste

Avec les motifs de liste, il est possible de faire correspondre un motif avec zéro, un ou plusieurs éléments d’un tableau ou d’une liste.

Exemple:

var numbers = new[] { 1, 2, 3, 4, 5 };
Console.WriteLine(numbers is [1, 2, 3, 4, 5]); // True 
Console.WriteLine(numbers is [1, 2, 5]); // False
Console.WriteLine(numbers is [1, 2, 3,..]); // True
Console.WriteLine(numbers is [_, 2, _, 4, 5]); // True 
Console.WriteLine(numbers is [_, >= 2, _, _, _]); // True
Console.WriteLine(numbers is [..]); // True

Les chaînes littérales brutes

Les chaînes littérales brutes permettent aux développeurs de créer des chaînes de caractères qui conservent exactement la même mise en forme que dans le code source, plus besoin d’utiliser des caractères d’échappement.

Un littéral de chaîne brute commence par au moins trois caractères guillemets doubles («  » »). Il se termine par le même nombre de guillemets doubles.

string longMessage = """
    There are several ways to make an HTTP request in JavaScript, but the most common is to use the XMLHttpRequest object.

    Here's an example of how to use XMLHttpRequest to make a GET request to a website:

    Copy code
    var xhr = new XMLHttpRequest();
    xhr.open("GET", "https://www.example.com", true);
    xhr.onreadystatechange = function() {
        if (xhr.readyState === 4 && xhr.status === 200) {
            console.log(xhr.responseText);
        }
    };
    xhr.send();
    """;

En conclusion, C# 11 apporte de nombreuses améliorations. Ces nouveautés montrent que Microsoft accorde énormément d’importance à ce langage et continue à répondre aux besoins en constante évolution des développeurs.

Auteur : Daniel MINKO FASSINOU

Laisser un commentaire




Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.