Descubra como as próximas mudanças melhorarão seu código e tornarão sua vida como desenvolvedor um pouco mais fácil.

Detalhes do tão aguardado C# 12 Preview vazaram, dando uma espiada nos próximos recursos que devem revolucionar a linguagem. Esses recursos são uma grande promessa para melhorar a legibilidade do código, otimizar o desempenho e desbloquear recursos avançados da linguagem.

Expressões de troca aprimoradas

C# 8 introduzido expressões básicas de troca que permitem expressar lógica condicional complexa de forma concisa e legível. O C# 12 leva isso adiante ao introduzir uma nova sintaxe de correspondência de padrões para expressões switch, tornando ainda mais fácil escrever códigos expressivos e concisos.

Considere o trecho de código a seguir.

var resultado = obj trocar
{
int eu quando eu > 0 => "Positivo",
int eu quando eu < 0 => "Negativo",
_ => "Zero"
};

Este código usa expressões switch para determinar se um número inteiro é positivo, negativo, ou zero. No C# 12, você pode simplificar ainda mais esse código usando a nova sintaxe de correspondência de padrões:

instagram viewer
var resultado = obj trocar
{
> 0 => "Positivo",
< 0 => "Negativo",
_ => "Zero"
};

Esta sintaxe permite que você omita o quando palavra-chave e use operadores relacionais diretamente na expressão switch.

Construtores Primários para Classes e Estruturas

Agora você pode criar construtores primários em qualquer aula ou struct (uma alternativa de classe leve). Usando construtores primários, você pode adicionar parâmetros à declaração de classe e usar esses valores dentro do corpo da classe.

C# 9 introduziu construtores primários como parte da sintaxe posicional para registros. C# 12 os estende para todas as estruturas e classes.

Você pode colocar os parâmetros após o nome do tipo entre colchetes, conforme mostrado abaixo:

público aula Estudante(int eu ia, corda nome, IEnumerable<decimal> notas)
{
públicoEstudante(int eu ia, corda nome): esse(id, nome, Enumerável. Vazio<decimal>()) { }
públicoint id => id;
públicocorda Nome { pegar; definir; } = nome. Aparar();
públicodecimal GPA => notas. Qualquer()? notas. Média(): 4.0m;
}

Os parâmetros de um construtor primário estão no escopo em todo o corpo do tipo declarante. Você pode configurar propriedades ou campos ou também utilizá-los em métodos ou funções locais como variáveis. Você também pode fornecer esses parâmetros para um construtor de base.

Melhorias em strings interpoladas

As strings interpoladas existem desde o C# 6. No C# 12, agora você pode criar valores dinâmicos para strings usando expressões complicadas.

int eu = 5;
corda saída = $"O valor de i é {eu}, e seu quadrado é {i*i}.";
Console. WriteLine (saída);

Este código imprime "O valor de i é 5 e seu quadrado é 25".

Usando Diretivas para Tipos Adicionais

Com o C# 12, você pode usar a diretiva using alias para alias de qualquer tipo, não apenas de tipos nomeados. Você pode criar aliases semânticos para tuplas, arrays, ponteiros ou outros tipos inseguros.

Aqui estão alguns exemplos:

usando Medição = (corda Unidades, int Distância);
usando UnitsInt = int?;
Exemplo de uso de aliases:
públicovazioCálculo(Medição de medição)
{
// corpo do método
}

Melhorias na Expressão Lambda

O C# 12 capacita as expressões lambda permitindo que você defina os valores padrão para os parâmetros. A sintaxe é idêntica à de outros parâmetros padrão:

Por exemplo, (int incrementTo = 5) => incrementTo + 1 define um valor padrão de 5 para o parâmetro incrementTo, que a chamada lambda usará se você não passar um valor.

var incrementoComPadrão = (int incrementTo = 5) => incrementTo + 1;
incrementWithDefault(); // 6
incrementWithDefault(9); // 10

Além disso, muitas outras melhorias vieram para as expressões lambda para torná-las mais eficazes.

Por exemplo:

  • Agora você pode criar expressões mais complexas dentro das funções lambda.
  • Agora você pode transformar expressões lambda em árvores de expressão que simplificam consultas complexas e otimizam o desempenho.

Streams assíncronos

Você pode iterar por meio de fontes de dados assíncronas com o novo fluxos assíncronos recurso do C# 12. Este novo iterador—aguardo foreach—ajuda você a iterar sobre um conjunto de dados assíncronos:

aguardampara cada (var item emGetItemsAsync())
{
Console. WriteLine (item.valor);
}

C# 12: Revolucionando o código com novos recursos empolgantes

Em antecipação ao C# 12, você pode esperar uma atualização revolucionária com novos recursos empolgantes. Esses avanços, como expressões switch aprimoradas, construtores primários e melhorias nas expressões lambda, indicam um forte foco na simplicidade, flexibilidade e desempenho do código.

O C# 12 está pronto para dar um salto significativo, permitindo que você escreva um código mais expressivo, eficiente e poderoso.