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

Underlying numeric values in C Sharp (C#)

Choose your learning style10 modes available
Introduction

Sometimes you want to know the number behind a named value, like a color or a day. This helps when you want to store or compare these values easily.

You have a list of named options and want to save their numbers in a file.
You want to compare two named values by their numbers.
You need to send a named value over the network as a number.
You want to print the number behind a named value for debugging.
Syntax
C Sharp (C#)
enum Name { Option1 = 1, Option2 = 2 }

int number = (int)Name.Option1;

Enums are special named groups of numbers.

You can get the number by casting the enum value to int.

Examples
This gets the number 1 from Monday.
C Sharp (C#)
enum Day { Sunday = 0, Monday = 1, Tuesday = 2 }

int dayNumber = (int)Day.Monday;
This gets the number 30 from Blue.
C Sharp (C#)
enum Color { Red = 10, Green = 20, Blue = 30 }

int colorValue = (int)Color.Blue;
Sample Program

This program shows how to get the number behind the enum value 'On'.

C Sharp (C#)
using System;

class Program
{
    enum Status { Off = 0, On = 1, Unknown = 99 }

    static void Main()
    {
        Status current = Status.On;
        int numericValue = (int)current;
        Console.WriteLine($"The numeric value of {current} is {numericValue}");
    }
}
OutputSuccess
Important Notes

By default, enum values start at 0 and increase by 1 unless you set them.

You can cast enum values to their underlying number type to get the number.

Summary

Enums group names with numbers.

You get the number by casting the enum value to int.

This helps when you want to store or compare enum values as numbers.

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

  1. Step 1: Understand default enum numbering

    By default, C# assigns the first enum member the value 0.
  2. Step 2: Check subsequent members

    Each following member increments by 1 automatically unless explicitly set.
  3. Final Answer:

    It starts at 0 and increments by 1 for each member -> Option A
  4. 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

  1. Step 1: Recall casting enum to int

    In C#, you get the numeric value by casting the enum member to int using (int).
  2. 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.
  3. Final Answer:

    int value = (int)Day.Monday; -> Option D
  4. 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

  1. Step 1: Identify explicit enum value

    Color.Red is set to 3 explicitly.
  2. Step 2: Understand implicit increment

    Color.Green is next, so it gets 4 (3 + 1).
  3. Final Answer:

    4 -> Option A
  4. 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

  1. Step 1: Check enum value rules

    C# allows enum members to share the same underlying numeric value.
  2. Step 2: Verify other options

    Enum members can be numbers, do not need sequential values, and duplicates are allowed.
  3. Final Answer:

    Nothing is wrong; duplicate values are allowed -> Option B
  4. 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?
hard
A. bool isMatch = score >= (int)Level.Low && score <= (int)Level.High;
B. bool isMatch = (Level)score != null;
C. bool isMatch = Enum.IsDefined(typeof(Level), score);
D. bool isMatch = score == Level.Low || score == Level.Medium || score == Level.High;

Solution

  1. Step 1: Understand Enum.IsDefined usage

    Enum.IsDefined checks if a given integer matches any enum member's underlying value.
  2. 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.
  3. Final Answer:

    bool isMatch = Enum.IsDefined(typeof(Level), score); -> Option C
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard