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

Enum vs constants decision in C Sharp (C#)

Choose your learning style10 modes available
Introduction

Enums and constants both store fixed values, but enums group related values with names, while constants hold single fixed values. Choosing between them helps keep code clear and easy to change.

When you have a set of related named values like days of the week or colors.
When you want to make code easier to read by using meaningful names instead of numbers or strings.
When you need to restrict a variable to a limited set of options.
When you want to avoid magic numbers or strings scattered in your code.
When you have a single fixed value that won't change and is used in many places.
Syntax
C Sharp (C#)
enum EnumName
{
    Value1,
    Value2,
    Value3
}

const dataType ConstantName = value;

Enums define a group of named values under one type.

Constants define a single fixed value with a name.

Examples
This enum groups days of the week as named values.
C Sharp (C#)
enum Day
{
    Sunday,
    Monday,
    Tuesday
}
This constant holds a fixed number for maximum users allowed.
C Sharp (C#)
const int MaxUsers = 100;
Enum with explicit numeric values assigned to each name.
C Sharp (C#)
enum Color
{
    Red = 1,
    Green = 2,
    Blue = 3
}
Constant string value for application name.
C Sharp (C#)
const string AppName = "MyApp";
Sample Program

This program shows how to use an enum to represent status values and a constant for a fixed number. It prints both to the console.

C Sharp (C#)
using System;

class Program
{
    enum Status
    {
        Pending,
        Approved,
        Rejected
    }

    const int MaxAttempts = 3;

    static void Main()
    {
        Status currentStatus = Status.Pending;
        Console.WriteLine($"Current status: {currentStatus}");
        Console.WriteLine($"Max attempts allowed: {MaxAttempts}");
    }
}
OutputSuccess
Important Notes

Use enums when you have multiple related options to choose from.

Use constants for single fixed values that do not change.

Enums improve code readability and reduce errors by limiting possible values.

Summary

Enums group related named values under one type.

Constants hold single fixed values with a name.

Choose enums for sets of options, constants for single fixed values.

Practice

(1/5)
1. Which of the following is the best reason to use an enum instead of constants in C#?
easy
A. To group related named values under one type for better readability
B. To store a single fixed value with a name
C. To improve performance by using fewer bytes
D. To allow values to change at runtime

Solution

  1. Step 1: Understand the purpose of enums

    Enums group related named values under one type, making code clearer and safer.
  2. Step 2: Compare with constants

    Constants hold single fixed values, not groups of related options.
  3. Final Answer:

    To group related named values under one type for better readability -> Option A
  4. Quick Check:

    Enums group related values = D [OK]
Hint: Enums group options; constants hold single fixed values [OK]
Common Mistakes:
  • Thinking constants can group multiple related values
  • Believing enums allow runtime value changes
  • Confusing performance benefits between enums and constants
2. Which of the following is the correct way to declare an enum in C#?
easy
A. enum Colors = [Red, Green, Blue];
B. const enum Colors = { Red, Green, Blue };
C. const Colors { Red, Green, Blue };
D. enum Colors { Red, Green, Blue };

Solution

  1. Step 1: Recall enum syntax in C#

    An enum is declared using the keyword enum followed by the name and braces with values separated by commas.
  2. Step 2: Check each option

    enum Colors { Red, Green, Blue }; matches the correct syntax. Options A, B, and D use invalid keywords or assignment syntax.
  3. Final Answer:

    enum Colors { Red, Green, Blue }; -> Option D
  4. Quick Check:

    Correct enum syntax = C [OK]
Hint: Use 'enum Name { ... }' without assignment or const [OK]
Common Mistakes:
  • Using 'const' keyword with enums
  • Assigning enum with '=' or using brackets []
  • Missing commas between enum values
3. Given the following code, what is the output?
enum Status { Pending = 1, Approved = 2, Rejected = 3 }
class Program {
    static void Main() {
        Status s = Status.Approved;
        Console.WriteLine((int)s);
    }
}
medium
A. Approved
B. 2
C. 1
D. Status.Approved

Solution

  1. Step 1: Understand enum underlying values

    The enum Status assigns Approved the integer value 2.
  2. Step 2: Casting enum to int

    Casting Status.Approved to int prints its underlying value, which is 2.
  3. Final Answer:

    2 -> Option B
  4. Quick Check:

    Enum cast to int = 2 [OK]
Hint: Casting enum to int prints its numeric value [OK]
Common Mistakes:
  • Printing enum name instead of int value
  • Assuming default enum values start at 0
  • Confusing enum member with string output
4. What is wrong with this code snippet?
const int MaxValue = 100;
enum Limits { Min = 0, Max = MaxValue }
medium
A. Enum members must be assigned constant expressions, but MaxValue is not allowed here
B. Constants cannot be declared outside methods
C. Enums cannot use constants as values
D. Nothing is wrong; this code compiles fine

Solution

  1. Step 1: Check enum member assignment rules

    Enum members must be assigned constant expressions known at compile time, but they cannot reference constants declared outside the enum or class scope.
  2. Step 2: Analyze constant usage in enum

    MaxValue is a const int declared outside the enum, which is not allowed as an enum member initializer.
  3. Final Answer:

    Enum members must be assigned constant expressions, but MaxValue is not allowed here -> Option A
  4. Quick Check:

    Enum members cannot reference external consts = A [OK]
Hint: Enum members must be assigned literals or consts declared within the enum or class [OK]
Common Mistakes:
  • Thinking constants declared outside the enum cannot be used
  • Believing constants cannot be declared as class fields (outside methods)
  • Confusing const fields with runtime variables
5. You need to represent the four seasons (Spring, Summer, Autumn, Winter) in your program. You also want to store the average temperature for each season as a fixed value. Which approach is best in C#?
hard
A. Use only constants for both seasons and temperatures
B. Use an enum with temperature values assigned to each season
C. Use an enum for seasons and separate constants for average temperatures
D. Use a class with static readonly fields for seasons and temperatures

Solution

  1. Step 1: Identify the nature of seasons and temperatures

    Seasons are a fixed set of named options, perfect for enums. Temperatures are fixed values but not options themselves.
  2. Step 2: Decide how to store temperatures

    Since temperatures are fixed numeric values related to seasons, constants are suitable to hold these values separately.
  3. Step 3: Evaluate other options

    Assigning temperatures directly to enum members is not ideal because enum values should be simple constants, not meaningful data like temperatures. Using a class with static fields is more complex than needed.
  4. Final Answer:

    Use an enum for seasons and separate constants for average temperatures -> Option C
  5. Quick Check:

    Enum for options + constants for fixed values = B [OK]
Hint: Use enums for sets, constants for related fixed values [OK]
Common Mistakes:
  • Assigning complex data to enum values
  • Using only constants for grouped options
  • Overcomplicating with classes when not needed
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