Esto vino a mi mente después de aprender lo siguiente de esta pregunta :
where T : struct
Nosotros, los desarrolladores de C #, todos conocemos los conceptos básicos de C #. Me refiero a declaraciones, condicionales, bucles, operadores, etc.
Algunos de nosotros incluso dominamos cosas como genéricos , tipos anónimos , lambdas , LINQ , ...
¿Pero cuáles son las características o trucos más ocultos de C # que incluso los fanáticos, adictos y expertos de C # apenas conocen?
Aquí están las características reveladas hasta ahora:
Palabras clave
yield
por Michael Stumvar
por Michael Stumusing()
declaración de kokosreadonly
por kokosas
por Mike Stoneas
/is
por Ed Swangrenas
/is
(mejorado) por Rocketpantsdefault
por deathofratsglobal::
por pzycomanusing()
bloques por AlexCusevolatile
por Jakub Šturcextern alias
por Jakub Šturc
Atributos
DefaultValueAttribute
por Michael StumObsoleteAttribute
por DannySmurfDebuggerDisplayAttribute
por StuDebuggerBrowsable
yDebuggerStepThrough
por bdukesThreadStaticAttribute
por marxidadFlagsAttribute
por Martin ClarkeConditionalAttribute
por AndrewBurns
Sintaxis
??
(fusionar nulos) operador de kokos- Banderines de números de Nick Berardi
where T:new
por Lars Mæhlum- Genéricos implícitos por Keith
- Lambdas de un parámetro de Keith
- Auto propiedades de Keith
- Alias de espacio de nombres de Keith
- Literales de cadena literales con @ by Patrick
enum
valores por lfoust- @variablenames por marxidad
event
operadores por marxidad- Formatear corchetes por Portman
- Modificadores de accesibilidad de acceso de propiedad por xanadont
- Operador condicional (ternario) (
?:
) por JasonS checked
yunchecked
operadores de Binoj Antonyimplicit and explicit
operadores de Flory
Características del lenguaje
- Tipos anulables por Brad Barker
- Tipos anónimos por Keith
__makeref __reftype __refvalue
por Judá Himango- Inicializadores de objetos por lomaxx
- Cadenas de formato de David en Dakota
- Métodos de extensión por marxidad
partial
métodos de Jon Erickson- Directivas de preprocesador de John Asbeck
DEBUG
directiva de preprocesador de Robert Durgin- Operador sobrecargado por SefBkn
- Inferencia de tipo por chakrit
- Operadores booleanos llevados al siguiente nivel por Rob Gough
- Pase la variable de tipo de valor como interfaz sin boxeo por Roman Boiko
- Determine programáticamente el tipo de variable declarada por Roman Boiko
- Constructores estáticos de Chris
- Mapeo de ORM más fácil en los ojos / condensado usando LINQ por roosteronacid
__arglist
por Zac Bowling
Características de Visual Studio
- Seleccionar bloque de texto en el editor por Himadri
- Fragmentos de DannySmurf
Marco de referencia
TransactionScope
por KiwiBastardDependantTransaction
por KiwiBastardNullable<T>
por IainMHMutex
por DiagoSystem.IO.Path
por ageektrappedWeakReference
por juan manuel
Métodos y propiedades
String.IsNullOrEmpty()
método por KiwiBastardList.ForEach()
método por KiwiBastardBeginInvoke()
,EndInvoke()
métodos de Will DeanNullable<T>.HasValue
yNullable<T>.Value
propiedades de RismoGetValueOrDefault
método por John Sheehan
consejos y trucos
- Buen método para controladores de eventos por Andreas HR Nilsson
- Comparaciones en mayúsculas por John
- Acceda a tipos anónimos sin reflexión por dp
- Una forma rápida de instanciar perezosamente las propiedades de colección de Will
- Funciones en línea anónimas similares a JavaScript de roosteronacid
Otro
- netmodules por kokos
- LINQBridge por Duncan Smart
- Extensiones paralelas de Joel Coehoorn