Underlying numeric values are the integer values automatically or explicitly assigned to each enum member. By default, they start at 0 and increase by 1 for each member.
Click to reveal answer
beginner
How can you specify a custom underlying numeric value for an enum member in C#?
You assign a value directly to the enum member, for example: enum Days { Sunday = 1, Monday = 2 }.
Click to reveal answer
beginner
What is the default underlying type of an enum in C#?
The default underlying type of an enum in C# is int.
Click to reveal answer
intermediate
Can you change the underlying type of an enum in C#? If yes, how?
Yes, you can specify a different integral type like byte, short, long by declaring it after the enum name, e.g., enum Colors : byte { Red, Green }.
Click to reveal answer
beginner
How do you get the underlying numeric value of an enum member in C#?
You can cast the enum member to its underlying type, for example: int value = (int)Days.Monday;.
Click to reveal answer
What is the default underlying numeric value of the first enum member if not specified?
A0
B1
C-1
DDepends on the enum
✗ Incorrect
By default, the first enum member has the underlying value 0.
How do you specify an enum with an underlying type of byte?
Aenum Colors(byte) { Red, Green }
Benum Colors : byte { Red, Green }
Cenum Colors { Red = byte, Green = byte }
Denum Colors { byte Red, byte Green }
✗ Incorrect
The syntax to specify the underlying type is enum Name : type { ... }.
What happens if you assign the same numeric value to two enum members?
AIt causes a compile error
BThe second member gets incremented automatically
CBoth members share the same underlying value
DThe enum becomes invalid
✗ Incorrect
Enum members can share the same underlying value without error.
How do you retrieve the numeric value of an enum member in C#?
AUse a cast like (int)EnumMember
BUse Enum.GetValue() method
CUse Enum.ToString()
DUse Enum.Parse()
✗ Incorrect
Casting the enum member to its underlying type returns its numeric value.
Which of these is NOT a valid underlying type for an enum in C#?
Aint
Bbyte
Clong
Dstring
✗ Incorrect
Enums can only have integral underlying types, not string.
Explain what underlying numeric values are in C# enums and how they are assigned.
Think about how enum members get their numbers.
You got /3 concepts.
Describe how to change the underlying type of an enum and why you might want to do that.
Look at the enum declaration syntax.
You got /3 concepts.
Practice
(1/5)
1. What is the underlying numeric value of an enum member in C# if not explicitly set?
easy
A. It starts at 0 and increments by 1 for each member
B. It is always 1 for all members
C. It is a random number assigned by the compiler
D. It must be manually assigned for each member
Solution
Step 1: Understand default enum numbering
By default, C# assigns the first enum member the value 0.
Step 2: Check subsequent members
Each following member increments by 1 automatically unless explicitly set.
Final Answer:
It starts at 0 and increments by 1 for each member -> Option A
Quick Check:
Default enum values start at 0 and increment [OK]
Hint: Remember enums start at zero unless you say otherwise [OK]
Common Mistakes:
Thinking enums start at 1 by default
Assuming enum values are random
Believing manual assignment is always required
2. Which of the following is the correct way to get the numeric value of an enum member Day.Monday in C#?
easy
A. int value = Convert.ToInt32(Day.Monday.ToString());
B. int value = Day.Monday.ToInt();
C. int value = Day.Monday.Value;
D. int value = (int)Day.Monday;
Solution
Step 1: Recall casting enum to int
In C#, you get the numeric value by casting the enum member to int using (int).
Step 2: Check other options
Enums have no ToInt() method or Value property; Convert.ToInt32(Day.Monday.ToString()) parses the name ("Monday") and throws FormatException.
Final Answer:
int value = (int)Day.Monday; -> Option D
Quick Check:
Cast enum to int with (int) [OK]
Hint: Cast enum to int with (int) to get its number [OK]
Common Mistakes:
Using non-existent methods like ToInt()
Trying to access a Value property
Converting enum.ToString() to int (parses name)
3. Given the enum:
enum Color { Red = 3, Green, Blue }
What is the output of this code?
Console.WriteLine((int)Color.Green);
medium
A. 4
B. 3
C. 1
D. 0
Solution
Step 1: Identify explicit enum value
Color.Red is set to 3 explicitly.
Step 2: Understand implicit increment
Color.Green is next, so it gets 4 (3 + 1).
Final Answer:
4 -> Option A
Quick Check:
Enum increments from explicit value [OK]
Hint: Next enum value increments by 1 from previous explicit value [OK]
Common Mistakes:
Assuming Green is 1 by default
Thinking Green equals Red's value
Forgetting implicit increment after explicit value
4. What is wrong with this code snippet?
enum Status { Active = 1, Inactive = 1, Pending = 2 }
medium
A. Enum members cannot have duplicate values
B. Nothing is wrong; duplicate values are allowed
C. Enum members must be strings, not numbers
D. Enum members must be assigned sequentially starting at 0
Solution
Step 1: Check enum value rules
C# allows enum members to share the same underlying numeric value.
Step 2: Verify other options
Enum members can be numbers, do not need sequential values, and duplicates are allowed.
Final Answer:
Nothing is wrong; duplicate values are allowed -> Option B
Quick Check:
Duplicate enum values are valid in C# [OK]
Hint: Duplicate enum values are allowed in C# [OK]
Common Mistakes:
Thinking duplicate enum values cause errors
Believing enums must start at 0 and be sequential
Confusing enum members with strings
5. You have this enum:
enum Level { Low = 1, Medium = 5, High = 10 }
Which code correctly checks if an integer variable score matches any enum value?
Enum.IsDefined checks if a given integer matches any enum member's underlying value.
Step 2: Analyze other options
A checks range (includes invalid like 2); B casts int to enum (always succeeds) != null (always true); C direct int == enum comparisons do not compile without casting enum to int.
Final Answer:
bool isMatch = Enum.IsDefined(typeof(Level), score); -> Option C
Quick Check:
Use Enum.IsDefined to check valid enum values [OK]
Hint: Use Enum.IsDefined to check if int matches enum value [OK]
Common Mistakes:
Casting int to enum without validation
Checking range instead of exact enum values
Comparing int directly to enum members without casting
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.