0Pricing
C# Academy · Aula

Enumerações e [Flags]

Defina enumerações com valores explícitos e tipos subjacentes, converta e analise valores com segurança e modele opções combináveis com [Flags].

Enumerações e [Flags] é uma aula grátis de C# Academy no CoddyKit. Esta é a aula 3 de 3. 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 3 aulas no total.

Visão geral das enumerações

Objetivo: usar enumerações para constantes nomeadas e [Flags] para opções combináveis.

  • Os nomes correspondem a números
  • Tipo subjacente (int por padrão)
  • Converta, analise e valide
  • Combine bit a bit usando [Flags]

Enumeração básica

As enumerações são constantes nomeadas. Você pode imprimir o nome ou convertê-las para o número subjacente.

using System;

public enum OrderStatus
{
  Pending = 0,
  Processing = 1,
  Shipped = 2,
  Delivered = 3,
  Cancelled = 4
}

public class Program
{
  public static void Main(string[] args)
  {
    OrderStatus s = OrderStatus.Processing;
    Console.WriteLine("Status = " + s);
    Console.WriteLine("Numeric = " + (int)s);
  }
}

Tipo subjacente e conversão

Você pode escolher um tipo subjacente (short, byte etc.). A conversão a partir de números não valida o valor.

using System;

// Choose underlying type if needed (default is int)
public enum HttpCode : short
{
  Ok = 200,
  NotFound = 404
}

public class Program
{
  public static void Main(string[] args)
  {
    short code = (short)HttpCode.Ok; // cast to number
    HttpCode fromNum = (HttpCode)404; // cast from number (no validation)
    Console.WriteLine("code=" + code);
    Console.WriteLine("fromNum=" + fromNum);
  }
}

Análise e validação

Use Enum.TryParse para ler texto e Enum.IsDefined para validar valores numéricos.

using System;

public enum Color
{
  Red = 1, Green = 2, Blue = 3
}

public class Program
{
  public static void Main(string[] args)
  {
    Color c;
    bool ok = Enum.TryParse<Color>("green", true, out c); // ignore case
    Console.WriteLine("Parsed? " + ok + " value=" + c);

    // Validate a numeric value before casting
    int raw = 4;
    bool valid = Enum.IsDefined(typeof(Color), raw);
    Console.WriteLine("Is 4 a defined Color? " + valid);
  }
}

[Flags] na prática

Add [Flags] e atribua valores que sejam potências de dois. Combine com |, teste com &, remova com ~ e &.

using System;

[Flags]
public enum FileAccessMode
{
  None  = 0,
  Read  = 1,   // 0001
  Write = 2,   // 0010
  Exec  = 4    // 0100
}

public class Program
{
  public static void Main(string[] args)
  {
    FileAccessMode m = FileAccessMode.Read | FileAccessMode.Write; // combine
    Console.WriteLine("Mode = " + m); // prints "Read, Write"

    // Test a flag (two common patterns)
    bool canWrite = (m & FileAccessMode.Write) != 0;
    Console.WriteLine("Can write? " + canWrite);

    // Remove a flag
    m = m & ~FileAccessMode.Write;
    Console.WriteLine("After remove: " + m);
  }
}

Dicas sobre enumerações

Dicas:

  • Atribua valores explícitos e mantenha-os estáveis.
  • Para [Flags], use potências de dois e inclua um None = 0.
  • Valide as entradas com Enum.TryParse/IsDefined.
  • Evite usar números inteiros brutos em APIs públicas; prefira enumerações.

Significado do atributo [Flags]

Verificação rápida: qual atributo permite que uma enumeração represente opções combináveis por bits, como Read | Write?

Recapitulação

Recapitulação: Use enumerações para obter constantes claras e seguras quanto aos tipos. Analise e valide com segurança. Para opções combináveis, adicione [Flags] e use operadores bit a bit para definir, testar e remover sinalizadores.

Perguntas Frequentes

A aula “Enumerações e [Flags]” é grátis?

Sim — o texto completo de “Enumerações e [Flags]” é 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 3 aulas no total.

O que vou aprender em “Enumerações e [Flags]”?

Defina enumerações com valores explícitos e tipos subjacentes, converta e analise valores com segurança e modele opções combináveis com [Flags]. 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 3 de 3.

Quanto tempo leva a aula “Enumerações e [Flags]”?

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. Structs: semântica de valor e padrão de imutabilidade
  2. Tipos semelhantes a registros e igualdade baseada em valor (padrão)
  3. Enumerações e [Flags]
← Voltar para C# Academy