C# — Enums
Basic enum
using System;
enum Color { Red, Green, Blue }
class Program
{
static void Main()
{
Color favorite = Color.Red;
Console.WriteLine(favorite); // Red
Console.WriteLine((int)favorite); // 0
// All values
foreach (Color c in Enum.GetValues<Color>())
{
Console.WriteLine($"{c} = {(int)c}");
}
}
}
Custom values
using System;
enum HttpStatus
{
OK = 200,
NotFound = 404,
ServerError = 500
}
class Program
{
static void Main()
{
HttpStatus code = HttpStatus.NotFound;
Console.WriteLine($"{code}: {(int)code}"); // NotFound: 404
}
}
Flags enum
using System;
[Flags]
enum Permissions
{
None = 0,
Read = 1,
Write = 2,
Execute = 4,
All = Read | Write | Execute
}
class Program
{
static void Main()
{
Permissions userPerms = Permissions.Read | Permissions.Write;
Console.WriteLine(userPerms); // Read, Write
// Check
bool canRead = userPerms.HasFlag(Permissions.Read);
Console.WriteLine($"Can read: {canRead}"); // True
// Add
userPerms |= Permissions.Execute;
Console.WriteLine(userPerms); // Read, Write, Execute
// Remove
userPerms &= ~Permissions.Write;
Console.WriteLine(userPerms); // Read, Execute
}
}
Enum methods
using System;
enum Day { Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday }
class Program
{
static void Main()
{
// Parse
Day day = Enum.Parse<Day>("Friday");
Console.WriteLine(day); // Friday
// TryParse
if (Enum.TryParse<Day>("Monday", out Day d))
{
Console.WriteLine($"Parsed: {d}");
}
// GetName
string name = Enum.GetName(typeof(Day), 2);
Console.WriteLine(name); // Wednesday
// IsDefined
bool valid = Enum.IsDefined(typeof(Day), 5);
Console.WriteLine($"Valid: {valid}"); // True
// GetNames / GetValues
string[] names = Enum.GetNames<Day>();
Console.WriteLine(string.Join(", ", names));
}
}
Enum in switch
using System;
enum Season { Spring, Summer, Autumn, Winter }
string GetDescription(Season season) => season switch
{
Season.Spring => "Flowers bloom",
Season.Summer => "Sun is hot",
Season.Autumn => "Leaves fall",
Season.Winter => "Snow falls",
_ => "Unknown"
};
class Program
{
static void Main()
{
Console.WriteLine(GetDescription(Season.Summer)); // Sun is hot
}
}
String to enum
using System;
enum Fruit { Apple, Banana, Cherry }
class Program
{
static void Main()
{
// From string
string input = "Banana";
if (Enum.TryParse<Fruit>(input, out Fruit fruit))
{
Console.WriteLine($"Fruit: {fruit}"); // Banana
}
// To string
string fruitName = Fruit.Cherry.ToString();
Console.WriteLine(fruitName); // Cherry
// Display attribute
var values = Enum.GetValues<Fruit>();
foreach (var f in values)
{
Console.WriteLine($"{f} = {(int)f}");
}
}
}
Enum with Display attribute
using System;
using System.ComponentModel.DataAnnotations;
enum Priority
{
[Display(Name = "Low Priority")]
Low = 1,
[Display(Name = "Medium Priority")]
Medium = 2,
[Display(Name = "High Priority")]
High = 3
}
class Program
{
static void Main()
{
Priority p = Priority.High;
// Get Display attribute
var field = p.GetType().GetField(p.ToString());
var attr = Attribute.GetCustomAttribute(field, typeof(DisplayAttribute))
as DisplayAttribute;
Console.WriteLine(attr?.Name ?? p.ToString()); // High Priority
}
}
Best practices
- Use
enumfor fixed sets of related constants - Use
[Flags]for combinable values - Use
Enum.TryParseinstead of casting - Consider
enum classpattern with static readonly for complex cases - Use
0as the default/none value for flags
Mini Practice
Write C# code that:
- Creates a
[Flags]enum for file permissions - Uses
Enum.Parseto convert a string to an enum - Writes a switch expression using enum values
- Demonstrates flag operations (add, remove, check)
Up Next
In the next lesson, you'll learn about Exceptions — error handling in C#.
Related Topics
Frequently Asked Questions about Enums
What is Enums in C#?
Enums is a fundamental concept in C#. This lesson explains it step by step with clear examples, making it easy for beginners to understand.
How do I learn Enums?
Start by reading the explanation above, then try the code examples. Practice by modifying the examples and experimenting with different values. Hands-on practice is the best way to learn Enums.
Why is Enums important in C#?
Enums is essential for C# development. Understanding this concept will help you write better code and solve real-world problems more effectively.