Resumo : neste tutorial, você aprenderá sobre o tipo enum C# e como usá-lo de forma eficaz.
Introdução ao tipo enum C#
Um tipo enum (ou tipo de enumeração) é um tipo de valor que permite definir um grupo de constantes numéricas nomeadas.
Para definir um tipo de enum, você usa a enum
palavra-chave e especifica os nomes dos membros da enumeração. Por exemplo:
enum Status
{
open,
inProgress,
resolved,
closed,
reopened
};
Linguagem de código: C# ( cs )
Neste exemplo, definimos um tipo de enum chamado Status
. O Status
enum tem cinco membros open
, inProgress
, resolved
, closed
e reopened
.
O exemplo a seguir mostra como usar o Status
enum:
namespace CSharpTutorial;
class Program
{
enum Status {
open,
inProgress,
resolved,
closed,
reopened
};
static void Main(string[] args)
{
Status status = Status.open;
bool isOpen = status == Status.open;
Console.WriteLine(isOpen); // True
}
}
Linguagem de código: C# ( cs )
Neste exemplo:
- Primeiro, defina uma variável com o
Status
tipo enum e inicialize seus valores para oStatus.open
membro. - Segundo, compare o status com o
Status.open
membro e atribua o resultado àisOpen
variável. Está comoisOpen
esperadotrue
.
Observe que para fazer referência a um membro enum, você usa o nome enum, o operador ponto e o nome do membro.
Os membros de um tipo enum possuem as seguintes características:
- Tenha os valores do tipo
int
- Tenha os valores padrão de 0, 1, 2,…
Por exemplo, no Status
enum, os tipos dos membros do enum são inteiros ( int
). O open
membro assume o valor de 0
, inProgress
o valor de 1
, etc.
C# permite especificar um tipo integral alternativo para os membros enum. Por exemplo:
enum Status : byte {
open,
inProgress,
resolved,
closed,
reopened
};
Linguagem de código: C# ( cs )
Neste exemplo, em vez de usar o int
tipo padrão, o Status
enum usa o byte
tipo. C# também permite especificar um valor explícito para cada membro enum. Por exemplo:
enum Status
{
open = 1,
inProgress = 2,
resolved = 3,
closed = 4,
reopened = 5
};
Linguagem de código: C# ( cs )
Se você usar valores explícitos para alguns membros, os membros não atribuídos continuarão aumentando a partir do último valor explícito. Por exemplo:
enum Status
{
open = 10,
inProgress, // 11
resolved, // 12
closed = 20,
reopened = 30
};
Linguagem de código: C# ( cs )
Neste exemplo, os membros inProgress
e resolved
terão os valores de 11
e 12
respectivamente.
Converter enum em int
C# permite converter uma instância de enum em um número inteiro. Por exemplo:
namespace CSharpTutorial;
class Program
{
enum Status
{
open,
inProgress,
resolved,
closed,
reopened
};
static void Main(string[] args)
{
Status status = Status.inProgress;
int statusValue = (int)status;
Console.WriteLine(statusValue); // 1
}
}
Linguagem de código: C# ( cs )
Neste exemplo, convertemos explicitamente a instância do Status
enum em um número inteiro. Como resultado, statusValue
é 1, que é o valor subjacente de Status.inProgress
.
O exemplo a seguir ilustra como converter um número inteiro em uma instância de um enum:
namespace CSharpTutorial;
class Program
{
enum Status
{
open,
inProgress,
resolved,
closed,
reopened
};
static void Main(string[] args)
{
int statusValue = 0;
Status status = (Status)statusValue;
Console.WriteLine(status == Status.open); // true
}
}
Linguagem de código: C# ( cs )
Converter enum em string
Para converter uma instância de um tipo enum em uma string, você usa o toString()
método. Por exemplo:
namespace CSharpTutorial;
class Program
{
enum Status
{
open,
inProgress,
resolved,
closed,
reopened
};
static void Main(string[] args)
{
var status = Status.open;
Console.WriteLine(status.ToString()); // open
}
}
Linguagem de código: C# ( cs )
Neste exemplo, convertemos a instância de enum de status em string, que retorna “aberto” conforme esperado.
O exemplo a seguir mostra como converter uma string em uma instância de enum:
namespace CSharpTutorial;
class Program
{
enum Status
{
open,
inProgress,
resolved,
closed,
reopened
};
static void Main(string[] args)
{
Enum.TryParse("open", out Status status);
Console.WriteLine(status == Status.open); // true
}
}
Linguagem de código: C# ( cs )
Iterar membros do enum
Para obter todos os valores dos membros enum, você usa o Enum.GetValues()
método. Por exemplo:
namespace CSharpTutorial;
class Program
{
enum Status
{
open,
inProgress,
resolved,
closed,
reopened
};
static void Main(string[] args)
{
foreach (int value in Enum.GetValues(typeof(Status)))
{
Console.WriteLine(value);
}
}
}
Linguagem de código: C# ( cs )
Saída:
0
1
2
3
4
Linguagem de código: C# ( cs )
Para obter os nomes dos membros da enum, você usa o Enum.GetNames()
método. Por exemplo:
namespace CSharpTutorial;
class Program
{
enum Status
{
open,
inProgress,
resolved,
closed,
reopened
};
static void Main(string[] args)
{
foreach (string name in Enum.GetNames(typeof(Status)))
{
Console.WriteLine(name);
}
}
}
Linguagem de código: C# ( cs )
Saída:
open
inProgress
resolved
closed
reopened
Linguagem de código: C# ( cs )
C# enum em uma instrução switch
O programa a seguir lê um número inteiro do console e imprime o membro enum correspondente usando a switch
instrução.
namespace CSharpTutorial;
class Program
{
enum Status
{
open,
inProgress,
resolved,
closed,
reopened
};
static void Main(string[] args)
{
Console.Write("Enter a status (0-4):");
var statusValue = Convert.ToInt32(Console.ReadLine());
Status status = (Status)statusValue;
switch (status)
{
case Status.open:
Console.WriteLine("The status is open");
break;
case Status.inProgress:
Console.WriteLine("The status is in progress");
break;
case Status.resolved:
Console.WriteLine("The status is resolved");
break;
case Status.closed:
Console.WriteLine("The status is closed");
break;
case Status.reopened:
Console.WriteLine("The status is reopened");
break;
}
}
}
Linguagem de código: C# ( cs )
Resumo
- Um tipo enum é um tipo de valor que define um grupo de constantes numéricas nomeadas.
- Os membros enum têm o tipo int e valores padrão de 0, 1, 2…