Logo

How to convert a string to an enum in C#?

Below are a few ways to convert a string to an enum in C#. Both approaches require you to know the target enum type at compile time.

Using Enum.Parse

public enum Colors { Red, Green, Blue } string colorName = "Red"; Colors colorEnum = (Colors)Enum.Parse(typeof(Colors), colorName); // colorEnum is Colors.Red
  • Throws an exception if the string doesn’t match an enum member name.
  • This approach is case-sensitive by default.

Using Enum.TryParse

public enum Colors { Red, Green, Blue } string colorName = "green"; bool success = Enum.TryParse(colorName, out Colors result); // success is true, result is Colors.Green if match is found
  • Does not throw an exception on failure, making it safer for user input.
  • You can pass a second parameter to make it case-insensitive:
    Enum.TryParse(colorName, true, out Colors result);

Best Practices

  1. Validate user input before parsing to avoid exceptions or invalid values.
  2. Consider Enum.IsDefined(typeof(MyEnum), value) if you need a strict check for valid enum members.
  3. For flexible user input, use Enum.TryParse(..., true, out ...) to allow case-insensitive parsing.

Grow Your C# Skills

Understanding how to handle enums and string conversions is just one part of writing robust .NET applications. To further polish your coding fundamentals and get ready for interviews, explore:

For additional insights on C# best practices and system design, check out the DesignGurus.io YouTube channel.

CONTRIBUTOR
TechGrind