Questo mi è venuto in mente dopo aver appreso quanto segue da questa domanda :
where T : struct
Noi, sviluppatori di C #, conosciamo tutti le basi di C #. Intendo dichiarazioni, condizionali, loop, operatori, ecc.
Alcuni di noi hanno anche imparato cose come Generici , tipi anonimi , lambda , LINQ , ...
Ma quali sono le funzionalità o i trucchi più nascosti di C # che persino i fan di C #, i tossicodipendenti e gli esperti conoscono a malapena?
Ecco le caratteristiche rivelate finora:
parole
yield
di Michael Stumvar
di Michael Stumusing()
dichiarazione di Kokosreadonly
di kokosas
di Mike Stoneas
/is
di Ed Swangrenas
/is
(migliorato) di Rocketpantsdefault
di deathofratsglobal::
di pzycomanusing()
blocchi di AlexCusevolatile
di Jakub Šturcextern alias
di Jakub Šturc
attributi
DefaultValueAttribute
di Michael StumObsoleteAttribute
di DannySmurfDebuggerDisplayAttribute
di StuDebuggerBrowsable
eDebuggerStepThrough
dai bdukesThreadStaticAttribute
di marxidadFlagsAttribute
di Martin ClarkeConditionalAttribute
di AndrewBurns
Sintassi
??
(coalesce nulls) operator di kokos- Numero flaggings di Nick Berardi
where T:new
di Lars Mæhlum- Generici impliciti di Keith
- Lambdas a un parametro di Keith
- Proprietà automatiche di Keith
- Alias dello spazio dei nomi di Keith
- Verbatim string letterali con @ di Patrick
enum
valori di lfoust- @variablenames di marxidad
event
operatori di marxidad- Formatta le parentesi di stringa di Portman
- Modificatori di accessibilità dell'accessor di proprietà di xanadont
- Operatore condizionale (ternario) (
?:
) di JasonS checked
eunchecked
operatori di Binoj Antonyimplicit and explicit
operatori di Flory
Caratteristiche del linguaggio
- Tipi nullabili di Brad Barker
- Tipi anonimi di Keith
__makeref __reftype __refvalue
di Judah Himango- Inizializzatori di oggetti di lomaxx
- Formatta le stringhe di David in Dakota
- Metodi di estensione di marxidad
partial
metodi di Jon Erickson- Direttive del preprocessore di John Asbeck
DEBUG
direttiva pre-processore di Robert Durgin- Sovraccarico dell'operatore da parte di SefBkn
- Digitare inferrenza per chakrit
- Operatori booleani portati al livello successivo da Rob Gough
- Passa la variabile value-type come interfaccia senza boxe di Roman Boiko
- Determinare programmaticamente il tipo di variabile dichiarato da Roman Boiko
- Costruttori statici di Chris
- Mappatura ORM più semplice per gli occhi / condensata usando LINQ di roosteronacid
__arglist
di Zac Bowling
Funzionalità di Visual Studio
- Seleziona il blocco di testo nell'editor di Himadri
- Snippet di DannySmurf
Struttura
TransactionScope
di KiwiBastardDependantTransaction
di KiwiBastardNullable<T>
di IainMHMutex
di DiagoSystem.IO.Path
da ageektrappedWeakReference
di Juan Manuel
Metodi e proprietà
String.IsNullOrEmpty()
metodo di KiwiBastardList.ForEach()
metodo di KiwiBastardBeginInvoke()
,EndInvoke()
metodi di Will DeanNullable<T>.HasValue
eNullable<T>.Value
proprietà di RismoGetValueOrDefault
metodo di John Sheehan
Suggerimenti e trucchi
- Bel metodo per i gestori di eventi di Andreas HR Nilsson
- Confronti maiuscoli di John
- Accedi a tipi anonimi senza riflessione di dp
- Un modo rapido per istanziare pigramente le proprietà della collezione di Will
- Funzioni in linea anonime simili a JavaScript di roosteronacid
Altro
- netmodules di kokos
- LINQBridge di Duncan Smart
- Estensioni parallele di Joel Coehoorn