0Pricing
C# Academy · Aula

Classes estáticas para utilitários

Agrupe funções auxiliares em classes estáticas.

Classes estáticas para utilitários é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 2 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.

O que é uma classe estática?

Uma classe estática é declarada com static class. Ela pode conter apenas membros estáticos e não pode ser instanciada. É o local natural para funções utilitárias.

using System;

static class StringUtils
{
    public static string Shout(string s) => s.ToUpper() + "!";
}

class Program
{
    static void Main()
    {
        Console.WriteLine(StringUtils.Shout("hello"));
    }
}

Não é possível criar instâncias

Você nunca escreve new para uma classe estática. Todo acesso é feito diretamente pelo nome da classe.

using System;

static class MathUtils
{
    public static int Cube(int x) => x * x * x;
}

class Program
{
    static void Main()
    {
        // No instance needed
        Console.WriteLine(MathUtils.Cube(3));
    }
}

Apenas membros estáticos são permitidos

O compilador garante que todo membro de uma classe estática seja estático. Campos ou construtores de instância não são permitidos.

using System;

static class Temperature
{
    public static double ToFahrenheit(double c) => c * 9 / 5 + 32;
    public static double ToCelsius(double f) => (f - 32) * 5 / 9;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Temperature.ToFahrenheit(100));
        Console.WriteLine(Temperature.ToCelsius(32));
    }
}

Agrupando auxiliares relacionados

Uma classe estática agrupa funções que compartilham um tema, fornecendo a elas um espaço de nomes claro, como Validation.IsEmail(...).

using System;

static class Validation
{
    public static bool IsPositive(int n) => n > 0;
    public static bool IsEmail(string s) => s.Contains("@") && s.Contains(".");
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Validation.IsPositive(5));
        Console.WriteLine(Validation.IsEmail("a@b.com"));
    }
}

A classe Math integrada

A classe Math do .NET é uma classe estática. Você nunca a instancia; apenas chama Math.Sqrt, Math.Max e assim por diante.

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine(Math.Max(3, 9));
        Console.WriteLine(Math.Sqrt(144));
        Console.WriteLine(Math.Round(3.14159, 2));
    }
}

Classe estática com campos estáticos

Uma classe estática pode conter campos estáticos para constantes compartilhadas ou configurações usadas por seus métodos.

using System;

static class Pricing
{
    public static decimal Tax = 0.08m;

    public static decimal WithTax(decimal price) => price + price * Tax;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Pricing.WithTax(100m));
    }
}

Funções puras

Métodos utilitários funcionam melhor como funções puras: a saída depende apenas das entradas, sem estado oculto. Isso as torna previsíveis e fáceis de testar.

using System;

static class Geometry
{
    public static double RectArea(double w, double h) => w * h;
    public static double TriArea(double b, double h) => 0.5 * b * h;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Geometry.RectArea(4, 5));
        Console.WriteLine(Geometry.TriArea(6, 3));
    }
}

Compondo métodos utilitários

Auxiliares estáticos podem chamar uns aos outros, criando operações maiores a partir de operações menores.

using System;

static class TextUtils
{
    public static string Clean(string s) => s.Trim().ToLower();
    public static string Slug(string s) => Clean(s).Replace(" ", "-");
}

class Program
{
    static void Main()
    {
        Console.WriteLine(TextUtils.Slug("  Hello World  "));
    }
}

Classe estática versus membros estáticos em uma classe comum

Se um tipo contiver somente auxiliares, torne a classe inteira estática. Se ele combinar auxiliares com instâncias, mantenha-o como uma classe comum com alguns membros estáticos.

using System;

static class Convert2
{
    public static int FeetToInches(int feet) => feet * 12;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Convert2.FeetToInches(3) + " inches");
    }
}

Mantendo os utilitários fáceis de encontrar

Agrupe os auxiliares em classes estáticas com bons nomes (DateUtils, StringUtils) para que outros desenvolvedores possam encontrá-los facilmente.

using System;

static class DateUtils
{
    public static bool IsWeekend(DayOfWeek d) =>
        d == DayOfWeek.Saturday || d == DayOfWeek.Sunday;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(DateUtils.IsWeekend(DayOfWeek.Sunday));
        Console.WriteLine(DateUtils.IsWeekend(DayOfWeek.Monday));
    }
}

Reunindo tudo

Classes utilitárias estáticas centralizam a lógica sem estado sob um nome claro, reduzindo a duplicação em todo o seu código.

using System;

static class MoneyUtils
{
    public static string Format(decimal amount) => "$" + amount.ToString("0.00");
    public static decimal ApplyDiscount(decimal price, double pct) =>
        price * (decimal)(1 - pct / 100);
}

class Program
{
    static void Main()
    {
        decimal discounted = MoneyUtils.ApplyDiscount(80m, 25);
        Console.WriteLine(MoneyUtils.Format(discounted));
    }
}

Verificação rápida

Teste sua compreensão sobre classes estáticas.

Recapitulação

Uma classe estática (static class X) não pode ser instanciada e pode conter apenas membros estáticos. Ela é o local padrão para funções utilitárias sem estado e constantes, agrupadas sob um nome descritivo. A classe Math integrada é um exemplo conhecido.

using System;

static class Util
{
    public static int Double(int n) => n * 2;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Util.Double(21));
    }
}

Perguntas Frequentes

A aula “Classes estáticas para utilitários” é grátis?

Sim — o texto completo de “Classes estáticas para utilitários” é 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 “Classes estáticas para utilitários”?

Agrupe funções auxiliares em classes estáticas. 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 2 de 4.

Quanto tempo leva a aula “Classes estáticas para utilitários”?

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