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