Guia Prático: Sobrecarga de Métodos no C# para Todos
Domine as Classes Abstratas em C# com Nosso Tutorial
Imagine que você queira criar um molde para vários tipos de produtos
🎲 Desafio: Analise Dados de Vendas com LINQ e Coleções!Aprenda a usar coleções e LINQ em C# para analisar vendas, filtrar dados e extrair insights estratégicos que otimizem decisões e impulsionem seu negócio., mas não quer que esse molde seja construído diretamente. Em C#, esse molde chama-se classe
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. abstrata. Ela serve como uma “base” para outras classes, obrigando quem herda dela a implementar certos métodos
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência., mas sem permitir que seja instanciada por conta própria.
Classes
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. abstratas são como o rascunho de um arquiteto: um plano geral que define o que deveria estar presente em cada construção - mas que, sozinho, não é uma casa habitável. Neste artigo, vamos explorar como essas classes
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. funcionam, quais as regras (e pegadinhas) e, claro, exemplos práticos para você entender na prática.
Tabela de Conteúdo 🔗
- O que são classes
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. abstratas? - Regras e
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. características principais - Exemplo prático
📝 Logging com Serilog: Registre Tudo como um Detetive de Bugs!Aprenda a usar Serilog em .NET para registrar logs estruturados, identificar erros e enriquecer informações, transformando seu código num enigma solucionável.: molde de máquina de café - Quando (e por que) usar classes
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. abstratas - Conclusão
- 🧩 O que são Classes
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. Abstratas? - ⚡ Por que usar Classes
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. Abstratas? - 🛠️ Implementação Prática em C#
- 🔍 Classes Abstratas vs. Interfaces
📜 Interfaces: Contratos que Garantem a Ordem no Universo OOP!Descubra como as interfaces em C# funcionam como contratos que garantem implementações flexíveis e robustas, facilitando o design e testes de sistemas. - 🏗️ Cenários
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. Reais de Uso - 🚨 Erros Comuns
🔏 Criptografia Assimétrica: Domine RSA e Troca de Chaves!Descubra como a criptografia assimétrica protege a troca de chaves e garante segurança em sistemas digitais usando RSA, C# e práticas recomendadas. (e Como Evitá-los) - 💡 Melhores Práticas
📝 Logging com Serilog: Registre Tudo como um Detetive de Bugs!Aprenda a usar Serilog em .NET para registrar logs estruturados, identificar erros e enriquecer informações, transformando seu código num enigma solucionável. - 🎯 Desafio Prático
O que são classes abstratas?🔗
Uma classe abstrata é uma classe
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. que não pode ser instanciada diretamente. Ela serve como um “contrato parcial” para as classes
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. filhas, definindo:
- Alguns atributos
📜 Atributos Customizados: Metadados que Guiam seu Código!Descubra como atributos customizados potencializam a organização do código, facilitam auditorias e testes, e garantem eficiência. e comportamentos comuns. - Métodos
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. que podem (ou devem) ser compartilhados pelas classes derivadas
🧬 Herança: Reutilize Código sem Copiar e Colar (como um Jedi)!Aprenda a utilizar herança em C# para criar hierarquias de classes, reaproveitar código e manter projetos organizados de forma simples e escalável..
Quando
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. dizemos que ela não pode ser instanciada, isso significa que você não pode criar um objeto diretamente dessa classe. Em vez disso, você cria objetos a partir de suas classes
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. filhas (subclasses).
Por que isso é útil? Porque muitas vezes queremos definir um comportamento padrão ou exigir que as classes
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. filhas tenham certo método implementado. A classe abstrata diz “é obrigatório ter esse método, mas eu não vou dizer exatamente como ele funciona”.
Regras e características principais🔗
1. Uso da palavra-chave
🗂️ Dicionários: Acesse Dados por Chaves como um Mestre dos HashMaps!Aprenda a usar dicionários em C# de modo prático e eficiente. Nosso tutorial mostra criação, acesso e otimização para manipular dados com segurança. abstract:
Para transformar uma classe em abstrata, basta adicionar
📦 List<T>: Dinamismo além dos Arrays!Descubra como utilizar List<T> em C# de forma eficiente. Aprenda a criar, manipular e otimizar listas para diferentes cenários com exemplos práticos. abstract na declaração
🧠 Variáveis em C#: Onde os Dados Ganham Vida (e Nome!)Descubra como as variáveis em C# funcionam, com exemplos do mundo real, boas práticas de nomeação e dicas para otimizar seu código.:
public abstract class MinhaClasseAbstrata
{
// ...
}
Se a classe for abstrata, você pode (opcionalmente) declarar métodos abstratos. Esses métodos
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. são assinaturas sem corpo, que as classes
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. filhas obrigatoriamente devem implementar. Exemplo:
public abstract void ExibirMensagem();
Note que não há chaves
🗂️ Dicionários: Acesse Dados por Chaves como um Mestre dos HashMaps!Aprenda a usar dicionários em C# de modo prático e eficiente. Nosso tutorial mostra criação, acesso e otimização para manipular dados com segurança. {} aqui (sem corpo!). A implementação vem na classe filha
🧬 Herança: Reutilize Código sem Copiar e Colar (como um Jedi)!Aprenda a utilizar herança em C# para criar hierarquias de classes, reaproveitar código e manter projetos organizados de forma simples e escalável..
Uma classe abstrata também pode ter métodos concretos, ou seja, métodos
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. com corpo. Assim, quem herda dessa classe já ganha um método
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. funcional “de graça”.
4. Proibido instanciar:
Se você tentar fazer algo como new MinhaClasseAbstrata(), o compilador não vai deixar.
5. Herança
🧬 Herança: Reutilize Código sem Copiar e Colar (como um Jedi)!Aprenda a utilizar herança em C# para criar hierarquias de classes, reaproveitar código e manter projetos organizados de forma simples e escalável. obrigatória para uso:
Para aproveitar a classe abstrata, você precisa criar uma classe
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. que herda dela, usando :. Exemplo:
public class MinhaClasseConcreta : MinhaClasseAbstrata
{
public override void ExibirMensagem()
{
Console.WriteLine("Implementação da mensagem!");
}
}
Exemplo prático: molde de máquina de café🔗
Pense em uma fábrica de máquinas de café. Todas as máquinas têm algumas características em comum (como um tanque de água e um método
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. para iniciar o preparo), mas cada modelo pode ter um funcionamento diferente na hora de “moer grãos” ou “aquecer a água”.
Podemos criar
📡 RESTful 101: Princípios que Todo Dev API Precisa Saber!Descubra os fundamentos do REST e boas práticas para criar APIs simples, escaláveis e eficientes. Domine métodos HTTP e status codes com exemplos práticos. uma classe
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. abstrata chamada MaquinaCafeBase:
public abstract class MaquinaCafeBase
{
// Propriedade concreta
public int CapacidadeAgua { get; set; }
// Método abstrato: cada máquina deve implementar à sua maneira
public abstract void MoerGraos();
// Método concreto: implementado aqui, igual para todas
public void IniciarPreparo()
{
Console.WriteLine("Iniciando preparo do café...");
}
}
Como usar? Vamos supor que temos duas máquinas de café diferentes:
public class MaquinaCafeExpresso : MaquinaCafeBase
{
public override void MoerGraos()
{
Console.WriteLine("Moendo grãos finamente para Expresso.");
}
}
public class MaquinaCafeFiltro : MaquinaCafeBase
{
public override void MoerGraos()
{
Console.WriteLine("Moendo grãos em consistência média para Filtro.");
}
}
Observe no exemplo acima:
- Cada máquina implementa uma forma diferente de
MoerGraos(). - Ambas utilizam o método
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. IniciarPreparo(), herdado da classe base
🧬 Herança: Reutilize Código sem Copiar e Colar (como um Jedi)!Aprenda a utilizar herança em C# para criar hierarquias de classes, reaproveitar código e manter projetos organizados de forma simples e escalável., sem precisar reescrever nada.
Quando (e por que) usar classes abstratas🔗
- Quando
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. há um conceito geral que não faz sentido ser instanciado sozinho: “Máquina genérica de café” não faz sentido por si só; a gente quer tipos específicos de máquinas. - Quando queremos garantir que certo comportamento ou método
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. seja implementado pelas subclasses: Se você tem a certeza de que toda máquina precisa saber moer grãos, mas cada uma o faz de um jeito, faz sentido um método
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. abstrato. - Vantagens:
- Facilita a padronização de código.
- Evita duplicação de métodos genéricos
Uso de generics e reflection com AOT: Dicas e truquesDescubra como otimizar performance e segurança ao utilizar generics e reflection em aplicações .NET Native AOT, evitando erros em tempo de execução.. - Força a implementação de métodos
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. fundamentais.
- Desvantagens:
- Limita a flexibilidade: você precisa herdar de uma classe abstrata, e não dá para ter heranças
🧬 Herança: Reutilize Código sem Copiar e Colar (como um Jedi)!Aprenda a utilizar herança em C# para criar hierarquias de classes, reaproveitar código e manter projetos organizados de forma simples e escalável. múltiplas de classes em C#. - Se usada em excesso, pode complicar o design (classes
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. demais tornam o código mais difícil de entender).
- Limita a flexibilidade: você precisa herdar de uma classe abstrata, e não dá para ter heranças
Conclusão🔗
Classes
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. abstratas são como planos de construção que você não pode tangibilizar sozinhos, mas que definem a espinha dorsal de algo maior. Se você quer criar “famílias” de objetos com comportamentos semelhantes - e também quer garantir que determinados métodos
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. sejam sempre implementados - as classes abstratas são a ferramenta certa. Elas permitem centralizar lógica que todas as subclasses vão compartilhar, além de forçar a implementação de comportamentos específicos, mantendo o projeto mais organizado e consistente.
🧩 O que são Classes Abstratas?🔗
- Não podem ser instanciadas diretamente (
new MinhaClasseAbstrata()❌) - Podem conter:
- Métodos
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. implementados (com lógica real) - Métodos
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. abstratos (sem implementação, só assinatura) - Campos, propriedades
⚡ Propriedades: Get e Set com Elegância (e sem Campos Privados Bagunçados)!Aprenda como utilizar propriedades em C# para encapsular dados, validar informações e manter um código organizado, seguro e de fácil manutenção., eventos
- Métodos
public abstract class Animal {
public string Nome { get; set; } // Propriedade concreta
public abstract void EmitirSom(); // Método abstrato
public void Dormir() { // Método concreto
Console.WriteLine("Zzzzz...");
}
}
⚡ Por que usar Classes Abstratas?🔗
1. Forçar contratos: "Toda subclasse DEVE implementar X"
2. Compartilhar lógica comum: Evitar repetição
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! de código
3. Modelagem hierárquica clara: Definir relações "é um" específicas
4. Flexibilidade controlada: Mistura de implementações concretas e
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. abstratas
Exemplo real: Sistema de pagamento com múltiplos gateways (PayPal, Stripe). Todos devem implementar ProcessarPagamento(), mas compartilham lógica de registro
Entendendo a arquitetura do MongoDB: documentos, coleções e bancos de dadosExplore os pilares da arquitetura MongoDB, integrando bancos de dados, coleções e documentos para impulsionar seu desenvolvimento em C# até 2025. de transações.
🛠️ Implementação Prática em C#🔗
Vamos criar
📡 RESTful 101: Princípios que Todo Dev API Precisa Saber!Descubra os fundamentos do REST e boas práticas para criar APIs simples, escaláveis e eficientes. Domine métodos HTTP e status codes com exemplos práticos. um sistema de formas geométricas:
public abstract class FormaGeometrica {
public abstract double CalcularArea();
public void ExibirArea() {
Console.WriteLine($"Área: {CalcularArea()}");
}
}
public class Retangulo : FormaGeometrica {
public double Largura { get; set; }
public double Altura { get; set; }
public override double CalcularArea() {
return Largura * Altura;
}
}
// Uso:
var retangulo = new Retangulo { Largura = 5, Altura = 3 };
retangulo.ExibirArea(); // Área: 15
🔍 Classes Abstratas vs. Interfaces🔗
| Característica | Classe Abstrata | Interface |
|---|---|---|
| Herança múltipla | ❌ Não suporta | ✔️ Suporta |
| Implementação métodos | ✔️ Parcial/completa | ❌ Apenas assinaturas |
| Campos | ✔️ Pode ter | ❌ Não pode |
| Construtores | ✔️ Pode ter | ❌ Não pode |
| Modificador de acesso | Qualquer (public, etc) | Apenas public |
Regra prática: Use classe abstrata quando precisar compartilhar código entre classes relacionadas. Use interface
📜 Interfaces: Contratos que Garantem a Ordem no Universo OOP!Descubra como as interfaces em C# funcionam como contratos que garantem implementações flexíveis e robustas, facilitando o design e testes de sistemas. para definir contratos entre classes não relacionadas.
🏗️ Cenários Reais de Uso🔗
1. Frameworks de Pagamento:
public abstract class PaymentGateway {
protected abstract void ProcessPayment(decimal amount);
public void LogTransaction(string details) {
// Lógica comum de logging
File.AppendAllText("transactions.log", $"{DateTime.Now}: {details}");
}
}
public abstract class LoggerBase {
public abstract void Log(string message);
protected string FormatMessage(string message) {
return $"[{DateTime.Now:yyyy-MM-dd HH:mm:ss}] {message}";
}
}
🚨 Erros Comuns (e Como Evitá-los)🔗
1. Hierarquias muito profundas:
Animal → Mamífero → Felino → GatoDoméstico → GatoPersa ❌
Solução: Mantenha no máximo 3 níveis de herança
🧬 Herança: Reutilize Código sem Copiar e Colar (como um Jedi)!Aprenda a utilizar herança em C# para criar hierarquias de classes, reaproveitar código e manter projetos organizados de forma simples e escalável.
2. Misturar responsabilidades:
public abstract class Veiculo {
public abstract void Voar(); // ❌ Não faz sentido para carros
}
Solução: Quebrar em hierarquias separadas (VeiculoTerrestre/VeiculoAereo)
💡 Melhores Práticas🔗
1. Use modificador protected para
🔄 Loops em C#: Repita Tarefas sem Enlouquecer (Com for e while!)Descubra como automatizar repetições em C# utilizando loops for e while com exemplos práticos que evitam erros e otimizam seu código. Aprenda mais! membros que só fazem sentido nas subclasses
2. Prefira composição sobre herança
🧬 Herança: Reutilize Código sem Copiar e Colar (como um Jedi)!Aprenda a utilizar herança em C# para criar hierarquias de classes, reaproveitar código e manter projetos organizados de forma simples e escalável. quando possível
3. Documente métodos abstratos com XML comments
📄 Swagger/OpenAPI: Documente sua API Automaticamente!Descubra como gerar documentação interativa e automatizada em APIs com o Swagger/OpenAPI. Aprenda a configurar no .NET e testar endpoints facilmente.:
/// <summary>
/// Calcula o imposto específico do produto
/// </summary>
public abstract decimal CalcularImposto();
4. Considere classes
🏗️ Classes vs. Structs: Quando Usar Cada Uma (e Não Quebrar a Cabeça)!Descubra como escolher entre classes e structs em C#. Aprenda sobre alocação de memória, passagem por valor e referência, e performance nesta explicação clara. abstratas seladas (sealed) quando
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. a hierarquia não deve ser estendida
🎯 Desafio Prático🔗
Crie um sistema de veículos com:
- Método
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. abstrato LigarMotor() - Método
🧠 Métodos em C#: Como Criar Funções que Não São Só Enfeites!Otimize seu código em C# com métodos inteligentes. Aprenda práticas de reutilização, sobrecarga e escopo para melhorar a clareza e a eficiência. concreto Abastecer(double litros)
2. Subclasses Carro e
📊 Behavior-Driven Development: Testes que Todo Mundo Entende!Descubra como o BDD transforma testes em linguagens acessíveis. Aprenda a usar SpecFlow em C# para criar testes claros, colaborativos e sem ambiguidades. Moto implementando comportamentos específicos
3. Classe de teste que demonstra polimorfismo
🎭 Polimorfismo: Crie Métodos que se Transformam como um Camaleão!Descubra como o polimorfismo permite métodos versáteis em C#. Veja exemplos práticos e dicas para dominar OOP de forma flexível e robusta.
Dica bônus: Adicione uma propriedade
⚡ Propriedades: Get e Set com Elegância (e sem Campos Privados Bagunçados)!Aprenda como utilizar propriedades em C# para encapsular dados, validar informações e manter um código organizado, seguro e de fácil manutenção. abstrata TipoCombustivel que cada subclasse deve implementar!
Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.
Referências🔗
- .NET Documentation: learn.microsoft.com/pt-br/dotnet/
- C# Language Specification: learn.microsoft.com/pt-br/dotnet/csharp/language-reference/language-specification/
- DevBlogs da Microsoft: devblogs.microsoft.com/dotnet/
- GitHub: Microsoft/.NET: github.com/dotnet
- Microsoft Learn: C# e .NET: learn.microsoft.com/pt-br/dotnet/csharp/

há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 10 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás
há 11 months atrás