Métodos e atributos estáticos
Em C#, métodos e atributos estáticos são recursos fundamentais para organizar e compartilhar dados ou comportamentos que pertencem à classe como um todo, e não a uma instância específica.
O que são membros estáticos?
- Atributos estáticos: Variáveis associadas à classe, não ao objeto. Seu valor é compartilhado por todas as instâncias.
- Métodos estáticos: Funções que podem ser chamadas sem criar um objeto da classe. Não podem aceder a membros de instância diretamente.
Como declarar membros estáticos
Use a palavra-chave static
antes do tipo do membro:
public class Calculadora
{
public static int Contador = 0; // atributo estático
public static int Somar(int a, int b) // método estático
{
Contador++;
return a + b;
}
}
Como aceder a membros estáticos
Acesse diretamente pelo nome da classe, sem criar um objeto:
int resultado = Calculadora.Somar(3, 5);
Console.WriteLine(Calculadora.Contador); // Saída: 1
Não é necessário (nem permitido) fazer:
// Errado:
Calculadora calc = new Calculadora();
int resultado = calc.Somar(3, 5);
Exemplo prático: Contador de instâncias
public class Conta
{
public static int TotalContas = 0; // atributo estático
public Conta()
{
TotalContas++;
}
}
// Uso:
Conta c1 = new Conta();
Conta c2 = new Conta();
Console.WriteLine(Conta.TotalContas); // Saída: 2
O atributo estático TotalContas
é incrementado a cada nova instância criada, mas pertence à classe, não ao objeto individual.
Classes estáticas
- Uma classe estática só pode conter membros estáticos.
- Não pode ser instanciada nem herdada.
- Útil para utilitários e funções auxiliares.
public static class Util
{
public static void MostrarMensagem(string msg)
{
Console.WriteLine(msg);
}
}
// Uso:
Util.MostrarMensagem("Olá!");
Regras e limitações
- Métodos estáticos não podem aceder a membros de instância (não podem usar
this
). - Podem ser sobrecarregados, mas não podem ser sobrescritos (não são polimórficos).
- Atributos estáticos são inicializados antes do primeiro acesso à classe.
- Variáveis locais dentro de métodos não podem ser estáticas.
Quando usar membros estáticos?
- Quando um dado ou comportamento deve ser compartilhado entre todas as instâncias.
- Para funções utilitárias ou helpers.
- Para implementar contadores, caches, ou configurações globais.