Cela m'est venu à l'esprit après avoir appris ce qui suit à partir de cette question :
where T : struct
Nous, développeurs C #, connaissons tous les bases de C #. Je veux dire des déclarations, des conditions, des boucles, des opérateurs, etc.
Certains d'entre nous ont même maîtrisé des trucs comme les génériques , les types anonymes , les lambdas , LINQ , ...
Mais quelles sont les fonctionnalités ou astuces les plus cachées de C # que même les fans de C #, les toxicomanes, les experts connaissent à peine?
Voici les fonctionnalités révélées jusqu'à présent:
Mots clés
yieldpar Michael Stumvarpar Michael Stumusing()déclaration de kokosreadonlypar kokosaspar Mike Stoneas/ispar Ed Swangrenas/is(amélioré) par Rocketpantsdefaultpar deathofratsglobal::par pzycomanusing()blocs par AlexCusevolatilepar Jakub Šturcextern aliaspar Jakub Šturc
Les attributs
DefaultValueAttributepar Michael StumObsoleteAttributepar DannySmurfDebuggerDisplayAttributepar StuDebuggerBrowsableetDebuggerStepThroughpar bdukesThreadStaticAttributepar marxidadFlagsAttributepar Martin ClarkeConditionalAttributepar AndrewBurns
Syntaxe
??(coalesce nulls ) opérateur par kokos- Signalisation numérique par Nick Berardi
where T:newpar Lars Mæhlum- Génériques implicites par Keith
- Lambdas à un paramètre par Keith
- Propriétés automatiques par Keith
- Alias d'espace de noms par Keith
- Verbatim string literals with @ by Patrick
enumvaleurs par lfoust- @variablenames par marxidad
eventopérateurs par marxidad- Format des parenthèses de chaîne par Portman
- Modificateurs d'accessibilité des accesseurs de propriété par xanadont
- Opérateur conditionnel (ternaire) (
?:) par JasonS checkedetuncheckedopérateurs par Binoj Antonyimplicit and explicitopérateurs par Flory
Caractéristiques linguistiques
- Types nullables par Brad Barker
- Types anonymes par Keith
__makeref __reftype __refvaluepar Judah Himango- Initialiseurs d'objets par lomaxx
- Format des chaînes de David dans le Dakota
- Méthodes d'extension par marxidad
partialméthodes par Jon Erickson- Directives de préprocesseur par John Asbeck
DEBUGdirective pré-processeur par Robert Durgin- Surcharge de l'opérateur par SefBkn
- Inférence de type par chakrit
- Les opérateurs booléens poussés au niveau supérieur par Rob Gough
- Passer la variable de type valeur comme interface sans boxe par Roman Boiko
- Déterminer par programme le type de variable déclaré par Roman Boiko
- Constructeurs statiques par Chris
- Cartographie ORM plus facile à regarder / condensée à l'aide de LINQ par roosteronacid
__arglistpar Zac Bowling
Fonctionnalités de Visual Studio
- Sélectionnez un bloc de texte dans l'éditeur par Himadri
- Snippets par DannySmurf
Cadre
TransactionScopepar KiwiBastardDependantTransactionpar KiwiBastardNullable<T>par IainMHMutexpar DiagoSystem.IO.Pathpar ageektrappedWeakReferencepar Juan Manuel
Méthodes et propriétés
String.IsNullOrEmpty()méthode par KiwiBastardList.ForEach()méthode par KiwiBastardBeginInvoke(),EndInvoke()méthodes de Will DeanNullable<T>.HasValueetNullable<T>.Valuepropriétés de RismoGetValueOrDefaultméthode par John Sheehan
Conseils & Astuces
- Belle méthode pour les gestionnaires d'événements par Andreas HR Nilsson
- Comparaisons majuscules par John
- Accéder aux types anonymes sans réflexion par dp
- Un moyen rapide d'instancier paresseusement les propriétés d'une collection par Will
- Fonctions en ligne anonymes de type JavaScript par roosteronacid
Autre
- netmodules par kokos
- LINQBridge par Duncan Smart
- Extensions parallèles par Joel Coehoorn