C# 9 (Lançado com .NET 5)
-
Records
Um dos recursos mais aguardados, os records são tipos de referência imutáveis projetados para armazenar dados. Eles eliminam a necessidade de escrever código repetitivo, como propriedades, métodosEquals
eGetHashCode
.public record Pessoa(string Nome, int Idade); var pessoa1 = new Pessoa("Ana", 30); var pessoa2 = pessoa1 with { Idade = 31 }; // Cria uma cópia com alteração
-
Pattern Matching Aprimorado
O pattern matching foi expandido para incluir padrões relacionais e lógicos.int numero = 15; string categoria = numero switch { < 10 => "Pequeno", >= 10 and <= 20 => "Médio", > 20 => "Grande", _ => "Desconhecido" };
-
Expressões
init
Propriedades agora podem ser inicializadas usando o modificadorinit
, permitindo que objetos sejam imutáveis após a criação.public class Produto { public string Nome { get; init; } public decimal Preco { get; init; } } var produto = new Produto { Nome = "Cadeira", Preco = 150.00m };
-
Melhorias em Top-level Programs
Tornou possível escrever programas sem precisar criar explicitamente uma classe ou métodoMain
.Console.WriteLine("Olá, Mundo!");
C# 10 (Lançado com .NET 6)
-
Global Using Directives
Simplifica o gerenciamento deusing
em arquivos, permitindo defini-los globalmente.// global using System; // global using System.Collections.Generic;
-
Padrões de Arquivo
Agora é possível organizar melhor os arquivos, evitando a necessidade de declarações repetitivas de espaço de nomes.namespace MeuProjeto; // Definição de namespace no topo do arquivo
-
Strings Constantes Interpoladas
Suporta interpolação em constantes.const string nome = "João"; const string mensagem = $"Olá, {nome}!";
-
Tipos Anônimos Aprimorados
Melhor suporte para o uso de tipos anônimos em contextos genéricos e expressões.
C# 11 (Lançado com .NET 7)
-
Parâmetros Genéricos
required
Torna obrigatório que certas propriedades sejam inicializadas durante a criação de objetos.public class Carro { public required string Modelo { get; set; } } var carro = new Carro { Modelo = "SUV" }; // Obrigatório
-
Strings Crues (
Raw Strings
)
Permitem criar strings multi-linha sem necessidade de escapar caracteres especiais.string json = """ { "nome": "Maria", "idade": 25 } """;
-
Novos Operadores de Conversão
Melhorias em operadores implícitos e explícitos para conversões customizadas entre tipos.
C# 12 (Lançado com .NET 8 - Antecipado)
-
Permissões de Mutabilidade em
record structs
Record structs agora permitem configurar propriedades como mutáveis ou imutáveis. -
Coleções com Dimensão Customizada
Adiciona suporte a listas ou arrays que podem ser manipulados com múltiplas dimensões personalizadas. -
Atualizações em
Primary Constructors
Torna mais intuitivo inicializar objetos com construtores embutidos na própria declaração da classe.
Vantagens dos Recursos Modernos
- Produtividade: A redução de código repetitivo acelera o desenvolvimento.
- Legibilidade: Recursos como
records
epattern matching
tornam o código mais limpo e compreensível. - Performance: Melhorias contínuas no runtime resultam em aplicações mais rápidas e eficientes.
- Versatilidade: A linguagem agora suporta com mais naturalidade cenários modernos como desenvolvimento de APIs, jogos e soluções em nuvem.
Considerações Finais
As evoluções recentes no C# destacam o compromisso da Microsoft em manter a linguagem competitiva e adaptada às demandas do mercado. Seja você um desenvolvedor web, criador de jogos ou engenheiro de software empresarial, os recursos modernos tornam o C# uma escolha poderosa e prática para diversos cenários.
Explorar as novidades do C# não apenas aprimora suas habilidades, mas também garante que você aproveite o máximo da linguagem para entregar soluções mais robustas e elegantes.
Nenhum comentário:
Postar um comentário