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
yield
par Michael Stumvar
par Michael Stumusing()
déclaration de kokosreadonly
par kokosas
par Mike Stoneas
/is
par Ed Swangrenas
/is
(amélioré) par Rocketpantsdefault
par deathofratsglobal::
par pzycomanusing()
blocs par AlexCusevolatile
par Jakub Šturcextern alias
par Jakub Šturc
Les attributs
DefaultValueAttribute
par Michael StumObsoleteAttribute
par DannySmurfDebuggerDisplayAttribute
par StuDebuggerBrowsable
etDebuggerStepThrough
par bdukesThreadStaticAttribute
par marxidadFlagsAttribute
par Martin ClarkeConditionalAttribute
par AndrewBurns
Syntaxe
??
(coalesce nulls ) opérateur par kokos- Signalisation numérique par Nick Berardi
where T:new
par 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
enum
valeurs par lfoust- @variablenames par marxidad
event
opé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 checked
etunchecked
opérateurs par Binoj Antonyimplicit and explicit
opérateurs par Flory
Caractéristiques linguistiques
- Types nullables par Brad Barker
- Types anonymes par Keith
__makeref __reftype __refvalue
par Judah Himango- Initialiseurs d'objets par lomaxx
- Format des chaînes de David dans le Dakota
- Méthodes d'extension par marxidad
partial
méthodes par Jon Erickson- Directives de préprocesseur par John Asbeck
DEBUG
directive 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
__arglist
par Zac Bowling
Fonctionnalités de Visual Studio
- Sélectionnez un bloc de texte dans l'éditeur par Himadri
- Snippets par DannySmurf
Cadre
TransactionScope
par KiwiBastardDependantTransaction
par KiwiBastardNullable<T>
par IainMHMutex
par DiagoSystem.IO.Path
par ageektrappedWeakReference
par 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>.HasValue
etNullable<T>.Value
propriétés de RismoGetValueOrDefault
mé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