Isso veio à minha mente depois que aprendi o seguinte com esta pergunta :
where T : struct
Nós, desenvolvedores de C #, todos sabemos o básico de C #. Refiro-me a declarações, condicionais, loops, operadores, etc.
Alguns de nós até dominam coisas como Genéricos , tipos anônimos , lambdas , LINQ , ...
Mas quais são os recursos ou truques mais ocultos do C # que mesmo os fãs, viciados e especialistas em C # mal conhecem?
Aqui estão os recursos revelados até agora:
Palavras-chave
yield
por Michael Stumvar
por Michael Stumusing()
declaração de kokosreadonly
por kokosas
por Mike Stoneas
/is
Por Ed Swangrenas
/is
(melhorado) por Rocketpantsdefault
por deathofratsglobal::
por pzycomanusing()
Blocos por AlexCusevolatile
por Jakub Šturcextern alias
por Jakub Šturc
Atributos
DefaultValueAttribute
por Michael StumObsoleteAttribute
por DannySmurfDebuggerDisplayAttribute
por StuDebuggerBrowsable
eDebuggerStepThrough
por bdukesThreadStaticAttribute
por marxidadFlagsAttribute
por Martin ClarkeConditionalAttribute
por AndrewBurns
Sintaxe
??
(coalesce nulls) operator por kokos- Bandeiras de número por Nick Berardi
where T:new
por Lars Mæhlum- Genéricos implícitos de Keith
- Lambdas de um parâmetro por Keith
- Auto propriedades por Keith
- Alias de namespace de Keith
- Literais de string verbais com @ by Patrick
enum
valores por lfoust- @variablenames por marxidad
event
operadores por marxidad- Formatar colchetes por Portman
- Modificadores de acessibilidade de acessador de propriedade por xanadont
- Operador condicional (ternário) (
?:
) por JasonS checked
eunchecked
operadores por Binoj Antonyimplicit and explicit
operadores de Flory
Características da linguagem
- Tipos anuláveis por Brad Barker
- Tipos anônimos por Keith
__makeref __reftype __refvalue
por Judah Himango- Inicializadores de objeto por lomaxx
- Formate strings de David em Dakota
- Métodos de extensão por marxidad
partial
métodos de Jon Erickson- Diretivas de pré-processador de John Asbeck
DEBUG
diretiva pré-processador de Robert Durgin- Sobrecarga de operador por SefBkn
- Digite dedução por chakrit
- Operadores booleanos levados ao próximo nível por Rob Gough
- Passe a variável do tipo valor como interface sem boxe por Roman Boiko
- Determinar programaticamente o tipo de variável declarada por Roman Boiko
- Construtores estáticos de Chris
- Mapeamento ORM mais fácil nos olhos / condensado usando LINQ da roosteronacid
__arglist
por Zac Bowling
Recursos do Visual Studio
- Selecionar bloco de texto no editor por Himadri
- Snippets por DannySmurf
Estrutura
TransactionScope
por KiwiBastardDependantTransaction
por KiwiBastardNullable<T>
por IainMHMutex
por DiagoSystem.IO.Path
por ageektrappedWeakReference
de Juan Manuel
Métodos e propriedades
String.IsNullOrEmpty()
método por KiwiBastardList.ForEach()
método por KiwiBastardBeginInvoke()
,EndInvoke()
métodos por Will DeanNullable<T>.HasValue
eNullable<T>.Value
propriedades por RismoGetValueOrDefault
método de John Sheehan
dicas e truques
- Bom método para manipuladores de eventos por Andreas HR Nilsson
- Comparações em maiúsculas de John
- Acesse tipos anônimos sem reflexão por dp
- Uma maneira rápida de instanciar preguiçosamente as propriedades de coleção de Will
- Funções inline anônimas do tipo JavaScript por roosteronacid
De outros
- netmodules por kokos
- LINQBridge por Duncan Smart
- Extensões paralelas por Joel Coehoorn