Как передать строковое значение в перечисление в C#: несколько методов, объясненных примерами кода

В C# перечисления используются для определения набора именованных констант. По умолчанию значения перечислений являются целыми числами, но иногда вам может потребоваться передать в перечисления строковые значения. В этой статье мы рассмотрим несколько методов достижения этой цели на C#, а также приведем примеры кода. Давайте погрузимся!

Метод 1: использование Enum.Parse

public enum Colors
{
    Red,
    Green,
    Blue
}
string colorString = "Green";
Colors color = (Colors)Enum.Parse(typeof(Colors), colorString);

Метод 2: использование Enum.TryParse

public enum Colors
{
    Red,
    Green,
    Blue
}
string colorString = "Blue";
Colors color;
Enum.TryParse(colorString, out color);

Метод 3: использование отражения

public enum Colors
{
    Red,
    Green,
    Blue
}
string colorString = "Red";
Colors color = (Colors)Enum.Parse(typeof(Colors), colorString);

Метод 4. Использование методов расширения

public static class EnumExtensions
{
    public static T ToEnum<T>(this string value) where T : struct, Enum
    {
        return (T)Enum.Parse(typeof(T), value, true);
    }
}
public enum Colors
{
    Red,
    Green,
    Blue
}
string colorString = "Green";
Colors color = colorString.ToEnum<Colors>();

Метод 5: использование оператора Switch

public enum Colors
{
    Red,
    Green,
    Blue
}
string colorString = "Blue";
Colors color;
switch (colorString.ToLower())
{
    case "red":
        color = Colors.Red;
        break;
    case "green":
        color = Colors.Green;
        break;
    case "blue":
        color = Colors.Blue;
        break;
    default:
        throw new ArgumentException("Invalid color string");
}

В этой статье мы рассмотрели несколько методов передачи строкового значения в перечисление в C#. Мы рассмотрели такие методы, как Enum.Parse, Enum.TryParse, Reflection, методы расширения и оператор Switch. Каждый метод имеет свои преимущества и может использоваться в зависимости от ваших конкретных требований. С помощью этих методов вы можете легко преобразовать строковые значения в перечисления в своих приложениях C#.