Linguagem C# e Ecossistema .NET: Records, LINQ e Async/Await
Instruções Gerais:
- Resolva as atividades em ordem progressiva de maturidade.
- Cada nível adiciona requisitos técnicos, tratamento de erros e casos de borda reais.
- Consulte o gabarito comentado ao final de cada questão para autoavaliação.
🎯 Nível 1: Fundamentos
Problema 07.1 — Sintaxe C# Moderna: Top-Level Statements e Records
Contexto: Sintaxe C# Moderna: Top-Level Statements e Records no contexto de Linguagem C# e Ecossistema .NET: Records, LINQ e Async/Await.
Requisitos de Execução:
- Declarar record imutável
public record Funcionario(int Id, string Nome, decimal Salario);.
Resultado Esperado
Record instanciado com imutabilidade e igualdade por valor.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_07_1_SeuNome - Envie na tarefa:
Atividade Cap 07 - Linguagem C# e Ecossistema .NET: Records, LINQ e Async/Await
🔑 Gabarito de Código & Solução Comentada
public record Funcionario(int Id, string Nome, decimal Salario);
var f1 = new Funcionario(1, "Carlos", 5000m);
var f2 = f1 with { Salario = 6000m };
Console.WriteLine($"Funcionario original: {f1.Nome} - R$ {f1.Salario}");
Console.WriteLine($"Funcionario atualizado: {f2.Nome} - Salario: R$ {f2.Salario}");
Console.WriteLine($"Imutabilidade garantida: {f1 != f2}");
🔍 Nível 2: Prática
Problema 07.2 — Consultas Declarativas com LINQ to Objects
Contexto: Consultas Declarativas com LINQ to Objects no contexto de Linguagem C# e Ecossistema .NET: Records, LINQ e Async/Await.
Requisitos de Execução:
- Filtrar lista de pedidos com valor > 100 e ordenar por data decrescente.
Resultado Esperado
Pipeline LINQ processando dados em memória com alta expressividade.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_07_2_SeuNome - Envie na tarefa:
Atividade Cap 07 - Linguagem C# e Ecossistema .NET: Records, LINQ e Async/Await
🔑 Gabarito de Código & Solução Comentada
var pedidos = new[] {
new { Id = 1, Total = 150.0 },
new { Id = 2, Total = 45.0 },
new { Id = 3, Total = 320.0 }
};
var filtrados = pedidos.Where(p => p.Total > 100.0).OrderByDescending(p => p.Total);
foreach (var p in filtrados) {
Console.WriteLine($"Pedido #{p.Id}: R$ {p.Total}");
}
⚡ Nível 3: Integração
Problema 07.3 — Programação Assíncrona com Task, async e await
Contexto: Programação Assíncrona com Task, async e await no contexto de Linguagem C# e Ecossistema .NET: Records, LINQ e Async/Await.
Requisitos de Execução:
- Executar chamada de I/O assíncrona não-bloqueante utilizando
Task.Delay.
Resultado Esperado
Método assíncrono executado na thread pool do .NET.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_07_3_SeuNome - Envie na tarefa:
Atividade Cap 07 - Linguagem C# e Ecossistema .NET: Records, LINQ e Async/Await
🔑 Gabarito de Código & Solução Comentada
async Task<string> ConsultarStatusServicoAsync() {
await Task.Delay(50);
return "ONLINE (200 OK)";
}
string status = await ConsultarStatusServicoAsync();
Console.WriteLine($"Status do microsservico: {status}");
Console.WriteLine("Execucao assincrona concluida com sucesso.");
🏆 Nível 4: Desafio Corporativo
Problema 07.4 — Pattern Matching Avançado e Switch Expressions
Contexto: Pattern Matching Avançado e Switch Expressions no contexto de Linguagem C# e Ecossistema .NET: Records, LINQ e Async/Await.
Requisitos de Execução:
- Classificar transações com pattern matching posicional e condicional em switch expressions.
Resultado Esperado
Regras de negócio corporativas modeladas com Pattern Matching do C# 12.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_07_4_SeuNome - Envie na tarefa:
Atividade Cap 07 - Linguagem C# e Ecossistema .NET: Records, LINQ e Async/Await
🔑 Gabarito de Código & Solução Comentada
string ClassificarDesconto(double valor, bool clienteVip) => (valor, clienteVip) switch {
( >= 1000.0, true) => "Desconto 20% Especial",
( >= 500.0, true) => "Desconto 15%",
( >= 500.0, false) => "Desconto 10%",
_ => "Sem Desconto"
};
var res = ClassificarDesconto(1200.0, true);
Console.WriteLine($"Resultado da regra: {res}");
Console.WriteLine("Validacao de Pattern Matching C# 12 concluida.");