0Pricing
C# Academy · Aula

Métodos e campos estáticos

Defina membros que pertencem ao próprio tipo.

Métodos e campos estáticos é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C# Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C# Academy inclui 4 aulas no total.

Estático versus de instância

Um membro de instância pertence a cada objeto; um membro estático pertence à própria classe. Existe exatamente uma cópia de um membro estático, compartilhada por todos.

using System;

class Counter
{
    public static int Total;   // shared
    public int Id;             // per instance
}

class Program
{
    static void Main()
    {
        Counter.Total = 5;
        Console.WriteLine("Shared Total: " + Counter.Total);
    }
}

Declarando campos estáticos

Um campo static é acessado por meio do nome da classe, e não de uma instância: ClassName.Field.

using System;

class Bank
{
    public static decimal InterestRate = 0.05m;
}

class Program
{
    static void Main()
    {
        Console.WriteLine("Rate: " + Bank.InterestRate);
    }
}

Métodos estáticos

Um método static é executado sem uma instância. Você o chama pela classe. Ele não pode usar campos de instância porque não existe this.

using System;

class MathUtil
{
    public static int Square(int x)
    {
        return x * x;
    }
}

class Program
{
    static void Main()
    {
        Console.WriteLine(MathUtil.Square(7));
    }
}

Estado compartilhado entre instâncias

Como um campo estático tem uma única cópia, todas as instâncias veem o mesmo valor. Isso é útil para contadores e configurações compartilhadas.

using System;

class Robot
{
    public static int Count;

    public Robot()
    {
        Count++;
    }
}

class Program
{
    static void Main()
    {
        new Robot();
        new Robot();
        new Robot();
        Console.WriteLine("Robots created: " + Robot.Count);
    }
}

Métodos estáticos não podem usar dados de instância

Um método estático não tem this, portanto só pode usar parâmetros, variáveis locais e outros membros estáticos.

using System;

class Calculator
{
    public static int Add(int a, int b) => a + b;
    public static int Multiply(int a, int b) => a * b;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Calculator.Add(2, 3));
        Console.WriteLine(Calculator.Multiply(4, 5));
    }
}

Combinando estático e de instância

Uma classe pode conter os dois tipos. Métodos de instância podem ler membros estáticos, mas métodos estáticos não podem ler membros de instância.

using System;

class Account
{
    public static decimal Fee = 2m;
    public decimal Balance;

    public decimal NetBalance()
    {
        return Balance - Fee;   // instance method can read static
    }
}

class Program
{
    static void Main()
    {
        var a = new Account { Balance = 100m };
        Console.WriteLine("Net: " + a.NetBalance());
    }
}

Padrão de contadores estáticos

Atribuir a cada novo objeto um identificador proveniente de um contador estático é um uso clássico de campos estáticos.

using System;

class Ticket
{
    private static int _next = 1;
    public int Number;

    public Ticket()
    {
        Number = _next++;
    }
}

class Program
{
    static void Main()
    {
        Console.WriteLine(new Ticket().Number);
        Console.WriteLine(new Ticket().Number);
        Console.WriteLine(new Ticket().Number);
    }
}

Métodos auxiliares estáticos

Métodos estáticos são excelentes para operações sem estado que dependem apenas de suas entradas, como formatadores e conversores.

using System;

class Format
{
    public static string Money(decimal amount)
    {
        return "$" + amount.ToString("0.00");
    }
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Format.Money(12.5m));
    }
}

Chamando métodos estáticos a partir de métodos estáticos

Métodos estáticos podem chamar livremente outros métodos estáticos da mesma classe, sem nenhuma instância.

using System;

class Geometry
{
    public static double CircleArea(double r) => Math.PI * Square(r);
    private static double Square(double x) => x * x;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Geometry.CircleArea(2).ToString("0.00"));
    }
}

Campos estáticos persistem

Um campo estático mantém seu valor durante toda a vida útil do programa, e não apenas durante a existência de um objeto. Use isso para caches ou totais acumulados.

using System;

class Logger
{
    public static int MessageCount;

    public static void Log(string msg)
    {
        MessageCount++;
        Console.WriteLine("[" + MessageCount + "] " + msg);
    }
}

class Program
{
    static void Main()
    {
        Logger.Log("start");
        Logger.Log("working");
        Logger.Log("done");
    }
}

Reunindo tudo

Membros estáticos representam conceitos que abrangem toda a classe: taxas compartilhadas, contadores e auxiliares sem estado, enquanto membros de instância armazenam dados específicos de cada objeto.

using System;

class Order
{
    public static decimal TaxRate = 0.10m;
    public decimal Subtotal;

    public decimal Total() => Subtotal + Subtotal * TaxRate;
}

class Program
{
    static void Main()
    {
        var o = new Order { Subtotal = 200m };
        Console.WriteLine("Total: " + o.Total());
    }
}

Verificação rápida

Teste sua compreensão sobre membros estáticos.

Recapitulação

Membros estáticos pertencem à classe e têm uma única cópia compartilhada; membros de instância pertencem a cada objeto. Métodos estáticos não têm this e não podem acessar dados de instância, mas o código de instância pode ler membros estáticos. Use membros estáticos para contadores, configurações compartilhadas e auxiliares sem estado.

using System;

class Demo
{
    public static int Shared;
    public int Own;
    public static void Bump() => Shared++;
}

class Program
{
    static void Main()
    {
        Demo.Bump();
        Demo.Bump();
        Console.WriteLine(Demo.Shared);
    }
}

Perguntas Frequentes

A aula “Métodos e campos estáticos” é grátis?

Sim — o texto completo de “Métodos e campos estáticos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C# Academy, atualize para CoddyKit PRO. O curso de C# Academy inclui 4 aulas no total.

O que vou aprender em “Métodos e campos estáticos”?

Defina membros que pertencem ao próprio tipo. Você pratica C# Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar C# Academy?

Nenhuma experiência prévia é necessária. C# Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Métodos e campos estáticos”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de C# Academy?

Sim. Cada aula de C# Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Métodos e campos estáticos
  2. Classes estáticas para utilitários
  3. Constantes e campos readonly
  4. Design estático versus de instância
← Voltar para C# Academy