Nouvelles fonctionnalités en C # 7

C # 7 ajoute de nombreuses nouvelles fonctionnalités avec un accent particulier sur la simplicité du codage et des performances améliorées. Il met beaucoup l'accent sur la consommation de données, la simplification du code et les performances, et il est conçu pour éliminer la douleur d'avoir à écrire du code supplémentaire de plusieurs manières.

Voici un aperçu des nouveautés et des améliorations de C # 7.

  • Prise en charge des fonctions locales
  • Prise en charge améliorée des types de tuples
  • Types d'enregistrement
  • Correspondance de motif
  • Types de référence non Nullable
  • Types immuables
  • Meilleur support pour les variables out

Meilleur support pour les variables out

La possibilité de déclarer une variable out juste au point d'utilisation est une nouvelle fonctionnalité intéressante en C # 7. Voici un exemple d'extrait de code qui illustre cela.

public void Save(Product p)

{

    p.SaveData(out int x);

    //Usual code

}

Un bon endroit pour utiliser la variable est à l'intérieur de votre bloc try. Utilisez simplement une variable booléenne out où un type de retour de true indique que l'opération est réussie, false dans le cas contraire.

Correspondance de motif

C # 7 fournit un excellent support pour la correspondance de modèles. Vous pouvez utiliser la correspondance de modèles sur n'importe quel type de données, même sur des types de données personnalisés. De plus, vous pouvez tirer parti de la correspondance de modèles pour extraire des valeurs d'une expression. Voici un extrait de code qui illustre la correspondance de modèles au travail!

object obj = "This is a demonstration of pattern matching in C# 7";

if (obj is string str)

{

    Console.WriteLine(str);

}

Prise en charge des fonctions locales

Vous pourriez souvent avoir besoin d'une fonction d'assistance qui ne doit être utilisée qu'une seule fois - peut-être dans une seule méthode. Vous pouvez maintenant déclarer ces fonctions dans une autre fonction. Ces fonctions sont appelées fonctions locales. En substance, la prise en charge des fonctions locales vous permet de déclarer des méthodes dans une portée de bloc. Même si cela était possible en utilisant les types Func et Action avec des méthodes anonymes dans les versions précédentes du langage C #, il y avait peu de défis. Ils ne prenaient pas en charge les génériques, les paramètres et les paramètres de référence et de sortie.

Meilleur support pour les tuples

Un Tuple est un regroupement temporaire de valeurs. Elle est similaire à une classe POCO mais créée à la volée. Le principal avantage de l'utilisation d'un Tuple est de permettre à une méthode de renvoyer plusieurs valeurs. Vous souhaiterez peut-être utiliser un tuple pour représenter un ensemble de données hétérogènes et fournir un moyen facile d'accéder à ces données. Les tuples n'ont rien de nouveau et existent depuis un certain temps déjà. Vous avez un support pour les tuples dans les langages de programmation F # et Python. Vous pouvez tirer parti d'un tuple pour stocker une séquence finie ordonnée de séquence finie immuable de données homogènes ou hétérogènes de tailles fixes.

Vous avez maintenant un support pour les littéraux Tuple et la déconstruction Tuple. En C # 7, un tuple est considéré comme un type valeur. C'est donc un type mutable et beaucoup plus efficace en ce qui concerne les performances.

Types de référence non nullables

Les types de valeur Nullable ont été introduits pour la première fois dans C # 2.0. Le type de référence non nullable est exactement l'opposé de cette fonctionnalité. Essentiellement, un type de référence non nullable est utilisé pour désigner un type de référence qui est garanti non nul. Voici comment un type de référence non nullable est déclaré en C # 7:

string! str; //This is a non-nullable reference type

Meilleure prise en charge des objets immuables

Un objet immuable est un objet dont l'état ne peut pas être modifié une fois qu'il est créé. Cela rend un objet thread sécurisé immuable. Supposons que vous créez une classe qui contient une propriété qui a un getter mais pas de setter. Oui apparemment, il semble qu'une instance de la classe soit immuable. Cependant, à un moment ultérieur, si quelqu'un ajoute un setter pour la même propriété, l'immuabilité est perdue, n'est-ce pas?

Voici exactement où la meilleure prise en charge des types immuables vient à la rescousse. Avec C # 7, vous pouvez créer une nouvelle instance basée sur une autre instance. Voici comment cela peut être réalisé.

var firstObject = new Employee(101);

var secondObject = firstObject with {EmployeeId = 102};

Types d'enregistrement

Les types d'enregistrement vous permettent de créer un type en utilisant uniquement les propriétés. En substance, un type d'enregistrement est un type de données qui comprend uniquement des propriétés. L'extrait de code suivant illustre comment un type d'enregistrement peut être déclaré.

 class Rectangle(int Height, int Breadth);