In this article we’ll explain the way of converting string to any enumeration type. There are two easiest ways to do so: using Parse or TryParse method. Examples of both are presented below. If you need to read how to create and use enums, please see following page: How to use enum.
All examples will use Day enum representing days of week.
1 2 3 4 5 6 7 8 9 10 |
enum Day { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday } |
Parse method
Parse method is overloaded, so it can receive different set of arguments. Target type can be passed either as a generic T parameter or first argument. Next argument is string value which represents element of desired enumeration. Optionally it is also possible to define whether parsing process should be case sensitive or not (by default it is case sensitive). It can be done via last boolean parameter ignoreCase.
1 2 3 4 5 6 7 8 9 |
var v1 = Enum.Parse<Day>("Saturday"); // sets v1 as Day.Saturday var v2 = Enum.Parse<Day>("saturday", false); // throws ArgumentException var v3 = Enum.Parse<Day>("saturday", true); // sets v1 as Day.Saturday var v4 = Enum.Parse<Day>("test"); // throws ArgumentException var v5 = Enum.Parse(typeof(Day), "Saturday"); // sets v1 as Day.Saturday var v6 = Enum.Parse(typeof(Day), "saturday", false); // throws ArgumentException var v7 = Enum.Parse(typeof(Day), "saturday", true); // sets v1 as Day.Saturday var v8 = Enum.Parse(typeof(Day), "test"); // throws ArgumentException |
TryParse method
TryParse works very similar to Parse, however it returns boolean value informing whether the process succeeded or not. Target enum is available through output argument. TryParse also can be case sensitive or not, which is decided based on ignoreCase parameter.
1 2 3 4 |
bool r1 = Enum.TryParse<Day>("Saturday", out Day v1); // r1 = true, v1 = Day.Saturday bool r2 = Enum.TryParse<Day>("saturday", false, out Day v2); // r2 = false, v2 = Day.Monday bool r3 = Enum.TryParse<Day>("saturday", true, out Day v3); // r3 = true, v3 = Day.Saturday bool r4 = Enum.TryParse<Day>("test", true, out Day v4); // r4 = false, v4 = Day.Monday |
Two cases (second and fourth) which failed a parse process, have output values set as Monday. The reason is the way how enums work. Default value is always first element from given enumeration, so when parsing failed, default value has been set.