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
yieldpor Michael Stumvarpor Michael Stumusing()declaración de kokosreadonlypor kokosaspor Mike Stoneas/ispor Ed Swangrenas/is(mejorado) por Rocketpantsdefaultpor deathofratsglobal::por pzycomanusing()bloques por AlexCusevolatilepor Jakub Šturcextern aliaspor Jakub Šturc
Atributos
DefaultValueAttributepor Michael StumObsoleteAttributepor DannySmurfDebuggerDisplayAttributepor StuDebuggerBrowsableyDebuggerStepThroughpor bdukesThreadStaticAttributepor marxidadFlagsAttributepor Martin ClarkeConditionalAttributepor AndrewBurns
Sintaxis
??(fusionar nulos) operador de kokos- Banderines de números de Nick Berardi
where T:newpor 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
enumvalores por lfoust- @variablenames por marxidad
eventoperadores por marxidad- Formatear corchetes por Portman
- Modificadores de accesibilidad de acceso de propiedad por xanadont
- Operador condicional (ternario) (
?:) por JasonS checkedyuncheckedoperadores de Binoj Antonyimplicit and explicitoperadores de Flory
Características del lenguaje
- Tipos anulables por Brad Barker
- Tipos anónimos por Keith
__makeref __reftype __refvaluepor Judá Himango- Inicializadores de objetos por lomaxx
- Cadenas de formato de David en Dakota
- Métodos de extensión por marxidad
partialmétodos de Jon Erickson- Directivas de preprocesador de John Asbeck
DEBUGdirectiva 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
__arglistpor Zac Bowling
Características de Visual Studio
- Seleccionar bloque de texto en el editor por Himadri
- Fragmentos de DannySmurf
Marco de referencia
TransactionScopepor KiwiBastardDependantTransactionpor KiwiBastardNullable<T>por IainMHMutexpor DiagoSystem.IO.Pathpor ageektrappedWeakReferencepor juan manuel
Métodos y propiedades
String.IsNullOrEmpty()método por KiwiBastardList.ForEach()método por KiwiBastardBeginInvoke(),EndInvoke()métodos de Will DeanNullable<T>.HasValueyNullable<T>.Valuepropiedades de RismoGetValueOrDefaultmé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