Découvrez comment les changements à venir amélioreront votre code et vous faciliteront un peu la vie en tant que développeur.
Les détails de la très attendue C# 12 Preview ont fuité, donnant un aperçu des fonctionnalités à venir qui devraient révolutionner le langage. Ces fonctionnalités sont très prometteuses pour améliorer la lisibilité du code, optimiser les performances et débloquer les fonctionnalités avancées du langage.
Expressions de commutation améliorées
C# 8 introduit expressions de commutation de base qui vous permettent d'exprimer une logique conditionnelle complexe de manière concise, sous une forme lisible. C# 12 va plus loin en introduisant une nouvelle syntaxe de correspondance de modèle pour les expressions de commutateur, ce qui facilite encore plus l'écriture de code expressif et concis.
Considérez l'extrait de code suivant.
var résultat = obj changer
{
entier je quand je > 0 => "Positif",
entier je quand je < 0 => "Négatif",
_ => "Zéro"
};
Ce code utilise des expressions de commutation pour déterminer si un entier est
positif, négatif, ou zéro. En C# 12, vous pouvez encore simplifier ce code en utilisant la nouvelle syntaxe de correspondance de modèle :var résultat = obj changer
{
> 0 => "Positif",
< 0 => "Négatif",
_ => "Zéro"
};
Cette syntaxe vous permet d'omettre le quand mot-clé et utilisez des opérateurs relationnels directement dans l'expression switch.
Constructeurs primaires pour les classes et les structures
Vous pouvez maintenant créer des constructeurs primaires dans n'importe quel classe ou struct (une alternative de classe légère). À l'aide de constructeurs primaires, vous pouvez ajouter des paramètres à la déclaration de classe et utiliser ces valeurs dans le corps de la classe.
C# 9 a introduit des constructeurs primaires dans le cadre de la syntaxe positionnelle des enregistrements. C# 12 les étend à toutes les structures et classes.
Vous pouvez mettre les paramètres après le nom du type entre parenthèses comme indiqué ci-dessous :
public classe Étudiant(entier identifiant, chaîne nom, IEnumerable<décimal> notes)
{
publicÉtudiant(entier identifiant, chaîne nom): ce(id, nom, énumérable. Vide<décimal>()) { }
publicentier identifiant => identifiant ;
publicchaîne Nom { obtenir; ensemble; } = nom. Garniture();
publicdécimal GPA => notes. N'importe quel()? les notes. Moyenne(): 4.0m;
}
Les paramètres d'un constructeur principal sont dans la portée de tout le corps du type déclarant. Vous pouvez configurer des propriétés ou des champs ou les utiliser dans des méthodes ou des fonctions locales en tant que variables. Vous pouvez également fournir ces paramètres à un constructeur de base.
Améliorations des chaînes interpolées
Les chaînes interpolées existent depuis C# 6. En C# 12, vous pouvez désormais créer des valeurs dynamiques pour les chaînes à l'aide d'expressions compliquées.
entier je = 5;
chaîne sortie = $"La valeur de i est {je}, et son carré est {je*je}.";
Console. WriteLine (sortie);
Ce code imprime "La valeur de i est 5, et son carré est 25".
Utilisation de directives pour des types supplémentaires
Avec C# 12, vous pouvez utiliser la directive using alias pour attribuer un alias à n'importe quel type, pas seulement aux types nommés. Vous pouvez créer des alias sémantiques pour les tuples, les tableaux, les pointeurs ou d'autres types non sécurisés.
Voici quelques exemples:
en utilisant Mesure = (chaîne Unités, entier Distance);
en utilisant UnitsInt = entier?;
Exemple d'utilisation d'alias :
publicannulerCalcul(Mesure de mesure)
{
// Corps de la méthode
}
Améliorations des expressions lambda
C# 12 renforce les expressions lambda en vous permettant de définir les valeurs par défaut des paramètres. La syntaxe est identique à celle des autres paramètres par défaut :
Par exemple, (int incrémentVers = 5) => incrémentVers + 1 définit une valeur par défaut de 5 pour le paramètre incrementTo, que l'appel lambda utilisera si vous ne lui transmettez pas de valeur.
var incrémentAvecDéfaut = (entier incrémentVers = 5) => incrémentVers + 1;
incrémentAvecDéfaut(); // 6
incrémentAvecDéfaut(9); // 10
En plus de cela, de nombreuses autres améliorations ont été apportées aux expressions lambda pour les rendre plus efficaces.
Par exemple:
- Vous pouvez désormais créer des expressions plus complexes dans les fonctions lambda.
- Vous pouvez désormais transformer des expressions lambda en arborescences d'expressions qui simplifient les requêtes complexes et optimisent les performances.
Flux asynchrones
Vous pouvez parcourir des sources de données asynchrones avec le nouveau flux asynchrones fonctionnalité de C # 12. Ce nouvel itérateur—attendre pour chaque— vous aide à itérer sur un ensemble de données asynchrones :
attendrepour chaque (var article dansGetItemsAsync())
{
Console. WriteLine (élément.valeur);
}
C# 12: révolutionner le code avec de nouvelles fonctionnalités intéressantes
En prévision de C# 12, vous pouvez vous attendre à une mise à jour révolutionnaire avec de nouvelles fonctionnalités intéressantes. Ces avancées, telles que les expressions de commutation améliorées, les constructeurs principaux et les améliorations des expressions lambda, indiquent une forte concentration sur la simplicité, la flexibilité et les performances du code.
C# 12 est sur le point de faire un bond en avant significatif, vous permettant d'écrire un code plus expressif, efficace et puissant.