Enumeração C#

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 enumpalavra-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 Statusenum tem cinco membros open, inProgress, resolved, closede reopened.

O exemplo a seguir mostra como usar o Statusenum:

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 Statustipo enum e inicialize seus valores para o Status.openmembro.
  • Segundo, compare o status com o Status.openmembro e atribua o resultado à isOpenvariável. Está como isOpenesperado true.

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 tipoint
  • Tenha os valores padrão de 0, 1, 2,…

Por exemplo, no Statusenum, os tipos dos membros do enum são inteiros ( int). O openmembro assume o valor de 0, inProgresso 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 inttipo padrão, o Statusenum usa o bytetipo. 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 inProgresse resolvedterão os valores de 11e 12respectivamente.

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 Statusenum 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
4Linguagem 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
reopenedLinguagem 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 switchinstruçã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…

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *