Bird
Raised Fist0
C Sharp (C#)programming~5 mins

Enum parsing from strings in C Sharp (C#)

Choose your learning style10 modes available
Introduction

Enums let us name groups of related values. Parsing from strings helps convert text into these named values so the program understands them.

When reading user input that names an option, like 'Red' or 'Blue'.
When loading settings from a file that stores enum names as text.
When receiving enum values as strings from a web API or database.
When converting command line arguments into enum values.
When you want to safely convert text to enum without errors.
Syntax
C Sharp (C#)
EnumType variable = (EnumType) Enum.Parse(typeof(EnumType), stringValue);

// Or safer:
bool success = Enum.TryParse(stringValue, out EnumType variable);

Enum.Parse throws an error if the string is not a valid enum name.

Enum.TryParse returns true or false to show success, avoiding errors.

Examples
This converts the string "Green" to the enum value Color.Green.
C Sharp (C#)
enum Color { Red, Green, Blue }

Color c = (Color) Enum.Parse(typeof(Color), "Green");
This safely tries to parse "Blue". If it works, c holds Color.Blue.
C Sharp (C#)
enum Color { Red, Green, Blue }

if (Enum.TryParse("Blue", out Color c)) {
    // c is Color.Blue
}
The third argument true makes parsing ignore case, so "red" works for Color.Red.
C Sharp (C#)
enum Color { Red, Green, Blue }

// Case insensitive parsing
Color c = (Color) Enum.Parse(typeof(Color), "red", true);
Sample Program

This program shows how to parse strings to enum values using both Enum.Parse and Enum.TryParse. It also shows how TryParse handles invalid strings safely.

C Sharp (C#)
using System;

class Program {
    enum Day { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }

    static void Main() {
        string input = "Friday";

        // Using Enum.Parse
        Day day1 = (Day) Enum.Parse(typeof(Day), input);
        Console.WriteLine($"Parsed with Enum.Parse: {day1}");

        // Using Enum.TryParse
        if (Enum.TryParse("sunday", true, out Day day2)) {
            Console.WriteLine($"Parsed with Enum.TryParse (case insensitive): {day2}");
        } else {
            Console.WriteLine("Failed to parse day.");
        }

        // Try parsing invalid string
        if (Enum.TryParse("Funday", out Day day3)) {
            Console.WriteLine($"Parsed: {day3}");
        } else {
            Console.WriteLine("'Funday' is not a valid Day enum value.");
        }
    }
}
OutputSuccess
Important Notes

Enum.Parse throws an exception if the string is invalid, so use TryParse to avoid crashes.

TryParse has an overload to ignore case, which is helpful for user input.

Always check the result of TryParse before using the parsed enum value.

Summary

Enums group related named values for easy use.

Enum.Parse converts strings to enum but can throw errors if invalid.

Enum.TryParse safely tries to convert strings and tells if it worked.

Practice

(1/5)
1. What does Enum.Parse do in C#?
easy
A. Checks if a string is a valid enum name without converting
B. Converts an enum value to a string
C. Creates a new enum type at runtime
D. Converts a string to the corresponding enum value

Solution

  1. Step 1: Understand Enum.Parse purpose

    Enum.Parse takes a string and tries to convert it to the matching enum value.
  2. Step 2: Compare options

    Only Converts a string to the corresponding enum value describes converting string to enum value. Others describe different actions.
  3. Final Answer:

    Converts a string to the corresponding enum value -> Option D
  4. Quick Check:

    Enum.Parse converts string to enum [OK]
Hint: Enum.Parse converts string to enum value directly [OK]
Common Mistakes:
  • Thinking Enum.Parse converts enum to string
  • Confusing Enum.Parse with Enum.TryParse
  • Believing Enum.Parse checks validity without conversion
2. Which of the following is the correct syntax to parse a string "Monday" to an enum DayOfWeek using Enum.Parse?
easy
A. DayOfWeek day = Enum.Parse("Monday");
B. DayOfWeek day = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), "Monday");
C. DayOfWeek day = Enum.Parse(DayOfWeek, "Monday");
D. DayOfWeek day = Enum.TryParse("Monday", out DayOfWeek day);

Solution

  1. Step 1: Recall Enum.Parse syntax

    The correct syntax requires specifying the enum type with typeof and casting the result.
  2. Step 2: Analyze options

    DayOfWeek day = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), "Monday"); matches the correct syntax: cast the result of Enum.Parse(typeof(EnumType), string).
  3. Final Answer:

    DayOfWeek day = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), "Monday"); -> Option B
  4. Quick Check:

    Enum.Parse needs typeof and cast [OK]
Hint: Use typeof(Enum) and cast result for Enum.Parse [OK]
Common Mistakes:
  • Omitting typeof(EnumType)
  • Not casting the result to enum type
  • Confusing Enum.Parse with Enum.TryParse syntax
3. What will be the output of this code?
enum Color { Red, Green, Blue }

string input = "Green";
Color c = (Color)Enum.Parse(typeof(Color), input);
Console.WriteLine(c);
medium
A. Green
B. Runtime error
C. Blue
D. Red

Solution

  1. Step 1: Parse string to enum

    The string "Green" matches the enum member Color.Green, so Enum.Parse returns that value.
  2. Step 2: Print enum value

    Console.WriteLine prints the enum member name, which is "Green".
  3. Final Answer:

    Green -> Option A
  4. Quick Check:

    Enum.Parse("Green") = Color.Green [OK]
Hint: Enum.Parse returns enum matching string name [OK]
Common Mistakes:
  • Expecting numeric value instead of name
  • Assuming case-insensitive parsing by default
  • Thinking it throws error for valid names
4. What is wrong with this code snippet?
enum Status { Active, Inactive }

string input = "Pending";
Status s = (Status)Enum.Parse(typeof(Status), input);
Console.WriteLine(s);
medium
A. It will print "Pending"
B. It will parse to Status.Active by default
C. It will throw a runtime exception
D. It will return null

Solution

  1. Step 1: Check if input matches enum members

    The string "Pending" is not a member of Status enum, so Enum.Parse cannot convert it.
  2. Step 2: Understand Enum.Parse behavior on invalid input

    Enum.Parse throws a runtime exception if the string does not match any enum name.
  3. Final Answer:

    It will throw a runtime exception -> Option C
  4. Quick Check:

    Invalid string causes Enum.Parse exception [OK]
Hint: Enum.Parse throws error if string not in enum [OK]
Common Mistakes:
  • Expecting default enum value on invalid string
  • Thinking it returns null instead of error
  • Confusing with Enum.TryParse behavior
5. You want to safely convert a string "Sunday" to enum DayOfWeek without risking exceptions. Which code snippet correctly does this?
hard
A. bool success = Enum.TryParse("Sunday", true, out DayOfWeek day);
B. DayOfWeek.TryParse("Sunday", out DayOfWeek day);
C. Enum.TryParse(typeof(DayOfWeek), "Sunday", out DayOfWeek day);
D. DayOfWeek day = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), "Sunday");

Solution

  1. Step 1: Understand safe parsing with Enum.TryParse

    Enum.TryParse returns a bool indicating success and outputs the parsed enum value.
  2. Step 2: Check correct method signature

    bool success = Enum.TryParse("Sunday", true, out DayOfWeek day); uses Enum.TryParse with ignoreCase=true and out parameter, matching correct safe parsing syntax.
  3. Final Answer:

    bool success = Enum.TryParse("Sunday", true, out DayOfWeek day); -> Option A
  4. Quick Check:

    Enum.TryParse with out and ignoreCase is safe [OK]
Hint: Use Enum.TryParse with out and ignoreCase for safe parse [OK]
Common Mistakes:
  • Using Enum.Parse which throws exceptions
  • Calling TryParse on enum type instead of Enum class
  • Ignoring the out parameter requirement
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard