10 fonctionnalités de C# que vous devriez vraiment apprendre (et utiliser !)

高洛峰
Libérer: 2017-02-08 13:24:15
original
1178 Les gens l'ont consulté

Si vous commencez à explorer C# ou décidez d'élargir vos connaissances, vous devriez alors apprendre ces fonctionnalités utiles du langage. Cela vous aidera à simplifier votre code, à éviter les erreurs et à gagner beaucoup de temps.

 

1) async/await

L'utilisation de async/await-pattern permet de débloquer l'interface utilisateur/le thread actuel tout en effectuant des opérations de blocage. Le modèle async/await fonctionne en permettant au code de continuer à s'exécuter même si quelque chose bloque l'exécution (comme une requête Web).


2) Initialiseurs d'objet/tableau/collection

Créez facilement des classes, des tableaux et des collections en utilisant des initialiseurs d'objet, de tableau et de collection Exemple :


//Quelques classes de démonstration publicclassEmployee{ publicstringName { get; set;} publicDateTime StartDate { get; set;}} //Utilisez l'initialiseur pour créer un employé Employee emp = newEmployee {Name= "John Smith", StartDate=DateTime.Now()};


L'exemple ci-dessus n'est vraiment utile que dans les tests unitaires, mais doit être utilisé dans d'autres contextes. À éviter car les instances de classes doit être créé à l’aide de constructeurs.


3) Lambdas, prédicats, délégués et fermetures

Dans de nombreux cas (comme lors de l'utilisation de Linq), ces fonctionnalités sont réellement requises, assurez-vous de Apprenez quand et comment les utiliser.


4) ?? (opérateur de coalescence nul)

?? – l'opérateur renvoie le côté gauche tant qu'il n'est pas nul dans ce cas Return ; le côté droit :


// Peut être nul varsomeValue = service GetValue(); vardefaultValue = 23 // Si someValue est nul, le résultat sera 23 varresult = someValue. ?? defaultValue ;


?? – les opérateurs peuvent être chaînés :

stringanybody = parm1 ?? localDefault ?? 🎜>

Et il peut être utilisé pour convertir des types nullables en non nullables :

vartotalPurchased = PurchaseQuantities.Sum(kvp => kvp.Value ??


5) $"{x}" (interpolation de chaîne) ——C#6


C'est pour C #6 Une nouvelle fonctionnalité qui permet d'assembler des chaînes de manière efficace et élégante :


//Ancienne méthode varsomeString = String.Format( "Quelques données : {0} , quelques données supplémentaires : {1}", someVariable, someOtherVariable); //Nouvelle méthode varsomeString = $"Quelques données : {someVariable}, quelques données supplémentaires : {someOtherVariable}";


Vous pouvez mettre des expressions C# entre accolades, ce qui rend cette interpolation de chaîne très puissante.


6)?.(Opérateur conditionnel nul) - C#6


L'opérateur conditionnel nul fonctionne comme suit :

//Null ifcustomer orcustomer.profile orcustomer.profile.age isnullvar currentAge = customer?.profile?.age;


Aucune mise à jour Beaucoup d'exceptions NullReferenceExceptions !


7) nameof Expression - C#6


Le nouveau nameof-expression peut ne pas sembler important, mais il a vraiment sa valeur . Lorsque vous utilisez des outils de refactorisation automatique comme ReSharper, vous devez parfois référencer les paramètres de méthode par leur nom :

publicvoid PrintUserName( UsercurrentUser){/ // L'outil de refactoring peut manquer la référence textuelle à utilisateur actuel ci-dessous si nous le renommeons if(currentUser == null) _logger. Error( "L'argument currentUser n'est pas fourni"); //...}


Vous devrait l'utiliser comme ça...


publicvoidPrintUserName(User currentUser){ //L'outil de refactoring ne manquera pas ça...if(currentUser == null) _logger . Error( $"Argument {nameof(currentUser)}is not provide"); //...} 8) Initialiseur de propriété - C#6


Les initialiseurs de propriété vous permettent pour déclarer la valeur initiale d'une propriété :


publicclassUser{ publicGuidId{ get; } = NewGuid( // ...}


9) les opérateurs as et is


is l'opérateur est utilisé pour contrôler si une instance est d'un type spécifique , par exemple, si vous voulez voir s'il est possible de convertir :


if( PersonisAdult){ //faire des trucs}


Utilisez l'opérateur as pour essayer de convertir une instance en classe. S'il ne peut pas être converti, il renverra null :


SomeType y = x asSomeType; if(y != null){ //do stuff} 10) rendement mot-clé


Le mot clé rendement permet de fournir une interface IEnumerable avec des entrées. L'exemple suivant renverra chaque puissance de 2 de 2 à 8 (par exemple, 2,4,8,16,32,64,128,256) :


publicstaticIEnumerable Power( intnumber, intexponent){ intresult = 1; for( inti = 0; i < exposant; i ) { result = result * number; rendementreturnresult; }}


rendement très puissant, s'il est utilisé correctement. Il vous permet de générer paresseusement une collection d'objets, c'est-à-dire que le système n'a pas besoin d'énumérer la totalité de la collection - il le fait simplement à la demande.

Pour plus d'articles liés aux 10 fonctions en C# que vous devriez vraiment apprendre (et utiliser !), veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!