10 Projetos Práticos para Aprender C# do Zero

10 Projetos Práticos para Aprender C# do Zero






Projetos Práticos para Aprender C# – Yurideveloper



Projeto 1 — Calculadora de Linha de Comando

Eu começo com uma calculadora de console para treinar parsing de entrada, validação de dados, tratamento de erros e composição de operações. O objetivo é entender como desenhar uma camada de domínio simples e uma entrada de usuário que seja resiliente a erros comuns.

  • Aprendizados: parsing de argumentos, validação, composição de operações, tratamento de exceções, design modular.
  • Arquitetura sugerida: uma classe Calculator com operações básicas (somar, subtrair, multiplicar, dividir); um driver de console que interpreta a entrada do usuário e invoca a Calculator; extensibilidade para novas operações.

Projeto 2 — Gerenciador de Tarefas com Persistência em JSON

Neste projeto eu apresento um gerenciador de tarefas simples com persistência em disco via JSON. O foco é trabalhar com tipos compostos, serialização, operações CRUD e I/O assíncrono, mantendo a lógica de domínio separada das preocupações de armazenamento.

  • Modelos: Tarefa com Id, Descricao, Concluida e DataCriacao.
  • Persistência: repositório que lê/grava uma lista de Tarefas em um arquivo JSON usando System.Text.Json.
  • Boas práticas: validação de dados, tratamento de exceções e mensagens de erro claras.

Projeto 3 — API Simples com ASP.NET Core Minimal API

Nesta seção, eu demonstro como expor endpoints REST para gerenciar tarefas em memória, com uma abordagem minimalista para foco no fluxo de requisição/resposta, modelagem de dados e padrões de endpoints. O objetivo é entender o ciclo de vida de uma requisição e as operações básicas de uma API.

  • Pontos-chave: Minimal API, store em memória, DTOs simples, validação básica, testes manuais com curl ou Postman.

// Minimal API (Program.cs)
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Hosting;

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

var tarefas = new List<Tarefa>();

// modelo simples
public class Tarefa { public int Id { get; set; } public string Descricao { get; set; } = ""; public bool Concluida { get; set; } }

app.MapGet("/tarefas", () => tarefas);

app.MapPost("/tarefas", (Tarefa t) =>
{
    t.Id = (tarefas.LastOrDefault()?.Id ?? 0) + 1;
    tarefas.Add(t);
    return Results.Created($"/tarefas/{t.Id}", t);
});

app.Run();

Projeto 4 — UI com Blazor Server (CRUD de Tarefas)

Finalmente, eu apresento a ideia de complementar o aprendizado com uma interface de usuário baseada em Blazor Server. A meta é entender componentização, estado local, binding e o ciclo de vida de componentes, conectando a camada de apresentação com a lógica de domínio.

  • Componentização: crie componentes para Listar, Criar e Editar Tarefas.
  • Estado e binding: use binding bidirecional, validação de formulários e feedback ao usuário.
  • Integração: conecte-se a APIs ou mantenha um store local simples para estudo.

Gostou? Continue explorando.

Descubra mais conteúdos técnicos no Yurideveloper para aprofundar C#, .NET e boas práticas de desenvolvimento.