📖 Scenario: You are building a simple program to manage the status of orders in a store. Each order can have a status like Pending, Shipped, or Delivered.You want to decide whether to use constants or an enum to represent these statuses in your code.
🎯 Goal: Create a program that first uses constants to represent order statuses, then switches to using an enum. Finally, print the status of an order using the enum.
📋 What You'll Learn
Create constants for order statuses with exact names and values
Create an enum for order statuses with exact names
Declare a variable with an enum value
Print the enum value to show the order status
💡 Why This Matters
🌍 Real World
Enums and constants are used in many programs to represent fixed sets of options, like order statuses, user roles, or colors.
💼 Career
Understanding when to use enums or constants is important for writing clear, maintainable code in professional software development.
Progress0 / 4 steps
1
Create constants for order statuses
Create three public constants called Pending, Shipped, and Delivered inside a public static class OrderStatusConstants. Assign the string values "Pending", "Shipped", and "Delivered" respectively.
C Sharp (C#)
Hint
Use public const string inside a static class to create constants.
2
Create an enum for order statuses
Create a public enum called OrderStatus with the members Pending, Shipped, and Delivered.
C Sharp (C#)
Hint
Use public enum OrderStatus and list the status names separated by commas.
3
Declare a variable with an enum value
Declare a variable called currentStatus of type OrderStatus and set it to OrderStatus.Shipped.
C Sharp (C#)
Hint
Use the enum type OrderStatus and assign the member OrderStatus.Shipped to the variable.
4
Print the enum value
Write a Console.WriteLine statement to print the value of currentStatus.
C Sharp (C#)
Hint
Use Console.WriteLine(currentStatus); inside a Main method to print the enum value.
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
Step 1: Understand the purpose of enums
Enums group related named values under one type, making code clearer and safer.
Step 2: Compare with constants
Constants hold single fixed values, not groups of related options.
Final Answer:
To group related named values under one type for better readability -> Option A
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
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.
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.
Final Answer:
enum Colors { Red, Green, Blue }; -> Option D
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
Step 1: Understand enum underlying values
The enum Status assigns Approved the integer value 2.
Step 2: Casting enum to int
Casting Status.Approved to int prints its underlying value, which is 2.
Final Answer:
2 -> Option B
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
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.
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.
Final Answer:
Enum members must be assigned constant expressions, but MaxValue is not allowed here -> Option A
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
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.
Step 2: Decide how to store temperatures
Since temperatures are fixed numeric values related to seasons, constants are suitable to hold these values separately.
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.
Final Answer:
Use an enum for seasons and separate constants for average temperatures -> Option C
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 unknownstrongwhile earning +1 Grip toward your certificate.