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
yieldpor Michael Stumvarpor Michael Stumusing()declaração de kokosreadonlypor kokosaspor Mike Stoneas/isPor Ed Swangrenas/is(melhorado) por Rocketpantsdefaultpor deathofratsglobal::por pzycomanusing()Blocos por AlexCusevolatilepor Jakub Šturcextern aliaspor Jakub Šturc
Atributos
DefaultValueAttributepor Michael StumObsoleteAttributepor DannySmurfDebuggerDisplayAttributepor StuDebuggerBrowsableeDebuggerStepThroughpor bdukesThreadStaticAttributepor marxidadFlagsAttributepor Martin ClarkeConditionalAttributepor AndrewBurns
Sintaxe
??(coalesce nulls) operator por kokos- Bandeiras de número por Nick Berardi
where T:newpor 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
enumvalores por lfoust- @variablenames por marxidad
eventoperadores por marxidad- Formatar colchetes por Portman
- Modificadores de acessibilidade de acessador de propriedade por xanadont
- Operador condicional (ternário) (
?:) por JasonS checkedeuncheckedoperadores por Binoj Antonyimplicit and explicitoperadores de Flory
Características da linguagem
- Tipos anuláveis por Brad Barker
- Tipos anônimos por Keith
__makeref __reftype __refvaluepor Judah Himango- Inicializadores de objeto por lomaxx
- Formate strings de David em Dakota
- Métodos de extensão por marxidad
partialmétodos de Jon Erickson- Diretivas de pré-processador de John Asbeck
DEBUGdiretiva 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
__arglistpor Zac Bowling
Recursos do Visual Studio
- Selecionar bloco de texto no editor por Himadri
- Snippets por DannySmurf
Estrutura
TransactionScopepor KiwiBastardDependantTransactionpor KiwiBastardNullable<T>por IainMHMutexpor DiagoSystem.IO.Pathpor ageektrappedWeakReferencede Juan Manuel
Métodos e propriedades
String.IsNullOrEmpty()método por KiwiBastardList.ForEach()método por KiwiBastardBeginInvoke(),EndInvoke()métodos por Will DeanNullable<T>.HasValueeNullable<T>.Valuepropriedades por RismoGetValueOrDefaultmé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