Dies kam mir in den Sinn, nachdem ich folgendes erfahren hatte diese Frage :
where T : struct
Wir, die C#-Entwickler, kennen alle die Grundlagen von C#. Ich meine Deklarationen, Konditionale, Schleifen, Operatoren usw.
Einige von uns beherrschten sogar die Dinge wie Generika , anonyme Typen , lambdas , LINQ , ...
Aber was sind die versteckten Funktionen oder Tricks von C#, die selbst C#-Fans, -Süchtige und -Experten kaum kennen?
Hier sind die bisher enthüllten Funktionen:
Schlüsselwörter
yield
par Michael Stumvar
par Michael Stumusing()
Aussage von kokosreadonly
par kokosas
par Mike Steinas
/is
par Ed Swangrenas
/is
(verbessert) durch Raketenhosendefault
par deathofratsglobal::
par pzycomanusing()
Blöcke von AlexCusevolatile
par Jakub Šturcextern alias
par Jakub Šturc
Attribute
DefaultValueAttribute
par Michael StumObsoleteAttribute
par DannySmurfDebuggerDisplayAttribute
par StuDebuggerBrowsable
yDebuggerStepThrough
par bdukesThreadStaticAttribute
par marxidadFlagsAttribute
par Martin ClarkeConditionalAttribute
par AndrewBurns
Syntax
??
(Koaleszenz-Nullen) Operator durch kokos- Nummerierung der Markierungen durch Nick Berardi
where T:new
par Lars Mæhlum- Implizite Generika durch Keith
- Ein-Parameter-Lambdas durch Keith
- Auto-Eigenschaften von Keith
- Namespace-Aliase von Keith
- Verbatim-String-Literale mit @ durch Patrick
enum
Werte von lfoust- @variablennamen von marxidad
event
Betreiber von marxidad- Formatieren von String-Klammern durch Portman
- Modifikatoren für die Zugänglichkeit der Eigenschaft accessor durch xanadont
- Bedingter (ternärer) Operator (
?:
) durch JasonS checked
yunchecked
Betreiber von Binoj Antonyimplicit and explicit
Betreiber von Flory
Sprachliche Merkmale
- Nullbare Typen durch Brad Barker
- Anonyme Typen von Keith
__makeref __reftype __refvalue
par Judah Himango- Objektinitialisierungen durch lomaxx
- Zeichenketten formatieren nach David in Dakota
- Erweiterungsmethoden durch marxidad
partial
Methoden von Jon Erickson- Präprozessoranweisungen von John Asbeck
DEBUG
Präprozessor-Richtlinie durch Robert Durgin- Überladen von Operatoren durch SefBkn
- Typenableitung durch chakrit
- Boolesche Operatoren auf die nächste Stufe gebracht par Rob Gough
- Übergabe der Variablen vom Typ Wert als Schnittstelle ohne Boxing durch Roman Boiko
- Programmatisch den deklarierten Variablentyp bestimmen durch Roman Boiko
- Statische Konstrukteure von Chris
- Vereinfachtes / komprimiertes ORM-Mapping mit LINQ von roosteronacid
__arglist
par Zac Bowling
Visual Studio-Funktionen
- Markieren Sie einen Textblock im Editor mit Himadri
- Schnipsel von DannySmurf
Rahmenwerk
TransactionScope
par KiwiBastardDependantTransaction
par KiwiBastardNullable<T>
par IainMHMutex
par DiagoSystem.IO.Path
par ageekt gefangenWeakReference
par Juan Manuel
Methoden und Eigenschaften
String.IsNullOrEmpty()
Methode von KiwiBastardList.ForEach()
Methode von KiwiBastardBeginInvoke()
,EndInvoke()
Methoden von Will DeanNullable<T>.HasValue
yNullable<T>.Value
Eigenschaften von RismoGetValueOrDefault
Methode von John Sheehan
Tipps und Tricks
- Nette Methode für Ereignisbehandler von Andreas H.R. Nilsson
- Vergleiche in Großbuchstaben durch John
- Zugriff auf anonyme Typen ohne Reflexion durch dp
- Eine schnelle Möglichkeit, Sammlungseigenschaften zu instanziieren, indem man Will
- JavaScript-ähnliche anonyme Inline-Funktionen durch roosteronacid
Andere
- Netzbausteine von kokos
- LINQBridge par Duncan Smart
- Parallele Erweiterungen par Joel Coehoorn