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

Enum parsing from strings in C Sharp (C#) - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Enum Parsing Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Enum parsing code?

Consider the following C# code that parses a string into an enum value. What will be printed?

C Sharp (C#)
using System;

enum Color { Red, Green, Blue }

class Program {
    static void Main() {
        string input = "Green";
        if (Enum.TryParse<Color>(input, out var color)) {
            Console.WriteLine((int)color);
        } else {
            Console.WriteLine("Parse failed");
        }
    }
}
A1
B0
CParse failed
D2
Attempts:
2 left
💡 Hint

Remember that enum values start at 0 by default and increment by 1.

❓ Predict Output
intermediate
2:00remaining
What happens if parsing fails without TryParse?

What will happen when running this code?

C Sharp (C#)
using System;

enum Status { Active, Inactive }

class Program {
    static void Main() {
        string input = "Pending";
        var status = (Status)Enum.Parse(typeof(Status), input);
        Console.WriteLine(status);
    }
}
AThrows ArgumentException
BPrints 0
CPrints Pending
DPrints Active
Attempts:
2 left
💡 Hint

Enum.Parse throws an exception if the string does not match any enum name.

🔧 Debug
advanced
2:30remaining
Why does this Enum.TryParse fail unexpectedly?

Look at this code snippet. It tries to parse a string to an enum but always fails. Why?

C Sharp (C#)
using System;

enum Direction { North, South, East, West }

class Program {
    static void Main() {
        string input = "north";
        if (Enum.TryParse<Direction>(input, out var dir)) {
            Console.WriteLine(dir);
        } else {
            Console.WriteLine("Failed to parse");
        }
    }
}
AThe out variable dir is not declared correctly
BThe enum Direction does not contain "north" because it is misspelled
CEnum.TryParse is case-sensitive by default, so "north" does not match "North"
DEnum.TryParse requires a third boolean parameter to work
Attempts:
2 left
💡 Hint

TryParse can be case-insensitive if you specify an option.

📝 Syntax
advanced
2:00remaining
Which option correctly parses a string ignoring case?

Choose the code snippet that correctly parses the string "west" to the enum Direction ignoring case.

C Sharp (C#)
enum Direction { North, South, East, West }
AEnum.TryParse<Direction>("west", out var d);
BEnum.Parse(typeof(Direction), "west", false);
CEnum.Parse<Direction>("west", true);
DEnum.TryParse<Direction>("west", out var d, true);
Attempts:
2 left
💡 Hint

Look for the overload of TryParse that accepts a boolean for case-insensitivity.

🚀 Application
expert
3:00remaining
How many items are in the dictionary after parsing multiple enum strings?

Given this code, how many key-value pairs does the dictionary contain after execution?

C Sharp (C#)
using System;
using System.Collections.Generic;

enum Level { Low = 1, Medium = 2, High = 3 }

class Program {
    static void Main() {
        string[] inputs = { "Low", "Medium", "High", "low", "HIGH" };
        var dict = new Dictionary<Level, int>();
        foreach (var s in inputs) {
            if (Enum.TryParse<Level>(s, true, out var level)) {
                if (!dict.ContainsKey(level)) {
                    dict[level] = 0;
                }
                dict[level]++;
            }
        }
        Console.WriteLine(dict.Count);
    }
}
A5
B3
C2
D4
Attempts:
2 left
💡 Hint

Consider that parsing is case-insensitive and dictionary keys are unique enum values.

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