Convert int or string to enum

8

How to convert variables from types int and string to enum ?

    
asked by anonymous 13.11.2015 / 14:52

1 answer

12

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 cast using string, as quoted by @bigown

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 you are not sure that the value of the String is an enum value), we can use the 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

Example enumerator

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

Question already answered in the SOen

    
13.11.2015 / 14:52