A nova versão C# 11, foi lançada em novembro de 2022. Ela inclui uma série de mudanças na sintaxe da linguagem, entre elas:
- Parâmetros opcionais: agora é possível declarar parâmetros opcionais para métodos, o que permite que os usuários desses métodos especifiquem ou não valores para esses parâmetros.
public void metodo(int? numero) {
// Se o numero for omitido, ele será 0
if (numero == null) {
numero = 0;
}
// Faça algo com o numero
// ...
}
- Propriedades de extensão: agora é possível criar propriedades de extensão para tipos existentes, o que permite adicionar novos membros a esses tipos sem ter que modificá-los diretamente.
public static class DecimalExtensions {
public static decimal MultiplicarPorDois(this decimal numero) {
return numero * 2;
}
}
// Usando a propriedade de extensão
decimal numero = 10;
numero = numero.MultiplicarPorDois();
// numero agora é 20
- Recordes: os registros são um novo tipo de estrutura que é projetado para ser fácil de usar e eficiente. Eles são imutáveis por padrão e podem ter propriedades, métodos e eventos.
public record Pessoa(string nome, int idade);
// Criando um novo registro
Pessoa pessoa = new Pessoa("João", 20);
// Imprimindo o nome e a idade da pessoa
Console.WriteLine(pessoa.nome); // João
Console.WriteLine(pessoa.idade); // 20
- Chaves de formato: as chaves de formato são um novo recurso que permite formatar texto de forma mais flexível. Eles podem ser usados para formatar números, datas, horas e outras informações.
// Formatando um número
string numeroFormatado = "{0:000000}", numero = 123456789;
Console.WriteLine(numeroFormatado, numero); // 123456789
// Formatando uma data
string dataFormatada = "{0:dd/MM/yyyy}", data = new DateTime(2023, 3, 8);
Console.WriteLine(dataFormatada, data); // 08/03/2023
- Novas construções de linguagem: C# 11 também inclui uma série de novas construções de linguagem, como o operador
?.
e o operador?. + ??
. Essas construções podem ser usadas para melhorar a legibilidade e a eficiência do código.
// Usando o operador `?.`
string nome = pessoa?.nome; // Se a pessoa for nula, nome será nulo
// Usando o operador `?. + ??`
int idade = pessoa?.idade ?? 0; // Se a pessoa for nula, idade será 0
Essas são apenas algumas das principais mudanças na sintaxe do C# na nova versão.
Para obter mais informações, consulte a documentação do C# 11: https://docs.microsoft.com/en-us/dotnet/csharp/.