Convert int or string to Enum

Asked

Viewed 3,523 times

10

How to convert type variables int and string for a enum?

1 answer

15


Convert int to enum

var meuInteiro = 0;    
MinhaEnum foo = (MinhaEnum)meuInteiro;
// foo == MinhaEnum.Primeiro

Convert string to Enum

var minhaString = "Segundo";
MinhaEnum foo = (MinhaEnum)Enum.Parse(typeof(MinhaEnum), minhaString);
// foo == MinhaEnum.Segundo

Example with invalid conversion using string, as quoted by @Maniero

var minhaString = "Terceiro";
MinhaEnum foo = (MinhaEnum)Enum.Parse(typeof(MinhaEnum), minhaString);
// Será disparada uma exceção
// Additional information: Valor 'Terceiro' solicitado não foi encontrado.

To avoid an exception (when it is not certain that the value of the string corresponds to an Enum value), we can use the method Enum.Tryparse

var minhaString = "Segundo";
MinhaEnum foo;
// Se o valor da string corresponder ao Enum, enumValida será True
// e o valor será atribuido a varíavel foo
var enumValida = Enum.TryParse<MinhaEnum>(minhaString, out foo);
if (enumValida)
    Console.WriteLine(foo);// foo == MinhaEnum.Segundo
else
    Console.WriteLine("A string informada não corresponde ao enumerador.");
// Caso o valor da string não corresponda à Enum, foo terá o valor padrão da Enum
// nesse caso, foo == MinhaEnum.Primeiro

Enumerator example

public enum MinhaEnum
{
    Primeiro = 0,
    Segundo = 1
}

Question already answered on Soen

  • 5

    Assuming that the string, has a valid value.

  • 1

    I just wanted to make a contribution instead of using var use the type of each data this will bring clarity in the code and pattern. The use of var this way for inexperienced users or/and beginners can bring confusion. Only a constructive tip.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.