How to convert variables from types int
and string
to enum
?
How to convert variables from types int
and string
to enum
?
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