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
yielddi Michael Stumvardi Michael Stumusing()dichiarazione di Kokosreadonlydi kokosasdi Mike Stoneas/isdi Ed Swangrenas/is(migliorato) di Rocketpantsdefaultdi deathofratsglobal::di pzycomanusing()blocchi di AlexCusevolatiledi Jakub Šturcextern aliasdi Jakub Šturc
attributi
DefaultValueAttributedi Michael StumObsoleteAttributedi DannySmurfDebuggerDisplayAttributedi StuDebuggerBrowsableeDebuggerStepThroughdai bdukesThreadStaticAttributedi marxidadFlagsAttributedi Martin ClarkeConditionalAttributedi AndrewBurns
Sintassi
??(coalesce nulls) operator di kokos- Numero flaggings di Nick Berardi
where T:newdi 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
enumvalori di lfoust- @variablenames di marxidad
eventoperatori di marxidad- Formatta le parentesi di stringa di Portman
- Modificatori di accessibilità dell'accessor di proprietà di xanadont
- Operatore condizionale (ternario) (
?:) di JasonS checkedeuncheckedoperatori di Binoj Antonyimplicit and explicitoperatori di Flory
Caratteristiche del linguaggio
- Tipi nullabili di Brad Barker
- Tipi anonimi di Keith
__makeref __reftype __refvaluedi Judah Himango- Inizializzatori di oggetti di lomaxx
- Formatta le stringhe di David in Dakota
- Metodi di estensione di marxidad
partialmetodi di Jon Erickson- Direttive del preprocessore di John Asbeck
DEBUGdirettiva 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
__arglistdi Zac Bowling
Funzionalità di Visual Studio
- Seleziona il blocco di testo nell'editor di Himadri
- Snippet di DannySmurf
Struttura
TransactionScopedi KiwiBastardDependantTransactiondi KiwiBastardNullable<T>di IainMHMutexdi DiagoSystem.IO.Pathda ageektrappedWeakReferencedi Juan Manuel
Metodi e proprietà
String.IsNullOrEmpty()metodo di KiwiBastardList.ForEach()metodo di KiwiBastardBeginInvoke(),EndInvoke()metodi di Will DeanNullable<T>.HasValueeNullable<T>.Valueproprietà di RismoGetValueOrDefaultmetodo 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