DevAcademia
C++C#CPythonJava
  • C# Basics

  • C# Introduction
  • C# Get Started
  • C# Syntax
  • C# Output
  • C# Comments
  • C# Variables
  • C# Data Types
  • C# Type Casting
  • C# User Input
  • C# Operators
  • C# Math
  • C# Strings
  • C# Booleans
  • C# If...Else
  • C# Switch Statement
  • C# While Loop
  • C# For Loop
  • C# Break and Continue
  • C# Arrays
  • C# Files
  • C# OOP

  • C# OOP Introduction
  • C# Classes and Objects
  • C# Class Members
  • C# Constructors
  • C# Destructors
  • C# Access Modifiers
  • C# Properties
  • C# Inheritance
  • C# Polymorphism
  • C# Abstraction
  • C# Interfaces
  • C# Enums
  • C# Exceptions
  • C# Quizzes

  • C# Quiz Introduction
  • C# Basics

  • C# Introduction
  • C# Get Started
  • C# Syntax
  • C# Output
  • C# Comments
  • C# Variables
  • C# Data Types
  • C# Type Casting
  • C# User Input
  • C# Operators
  • C# Math
  • C# Strings
  • C# Booleans
  • C# If...Else
  • C# Switch Statement
  • C# While Loop
  • C# For Loop
  • C# Break and Continue
  • C# Arrays
  • C# Files
  • C# OOP

  • C# OOP Introduction
  • C# Classes and Objects
  • C# Class Members
  • C# Constructors
  • C# Destructors
  • C# Access Modifiers
  • C# Properties
  • C# Inheritance
  • C# Polymorphism
  • C# Abstraction
  • C# Interfaces
  • C# Enums
  • C# Exceptions
  • C# Quizzes

  • C# Quiz Introduction

Loading Cs tutorial…

Loading content
C# OOPTopic 53 of 55
←PreviousPrevNextNext→

C# Enums - Complete Guide

Introduction to Enums

Enums (enumerations) in C# are value types that represent a collection of named constants. They make code more readable and reduce the need for magic numbers or hard-coded strings.

Enums are strongly typed, which means the compiler checks their usage at compile time. They can also be combined with switch statements, iterated over, and used in bitwise operations when marked with the [Flags] attribute.

Enum Declaration and Usage

Here are examples of enum declarations and how they are used in C#:

Example
using System;

namespace EnumsExample
{
    // Basic enum
    public enum DayOfWeek
    {
        Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday
    }

    // Enum with explicit values
    public enum StatusCode
    {
        Success = 200,
        BadRequest = 400,
        NotFound = 404,
        ServerError = 500
    }

    // Enum with a custom underlying type
    public enum Size : byte
    {
        Small = 1,
        Medium = 2,
        Large = 3,
        XLarge = 4
    }

    // Flags enum for bitwise combinations
    [Flags]
    public enum Permissions
    {
        None = 0,
        Read = 1,
        Write = 2,
        Execute = 4,
        Delete = 8,
        All = Read | Write | Execute | Delete
    }

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("=== Basic Enum Usage ===");
            DayOfWeek today = DayOfWeek.Wednesday;
            Console.WriteLine($"Today is: {today}");
            Console.WriteLine($"Numeric value: {(int)today}");

            // Parsing from string
            DayOfWeek parsedDay = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), "Friday");
            Console.WriteLine($"Parsed day: {parsedDay}");

            Console.WriteLine("\n=== Enum with Explicit Values ===");
            StatusCode code = StatusCode.Success;
            Console.WriteLine($"Status code: {code} ({(int)code})");

            Console.WriteLine("\n=== Enum Iteration ===");
            foreach (DayOfWeek day in Enum.GetValues(typeof(DayOfWeek)))
            {
                Console.WriteLine($"{day} = {(int)day}");
            }

            Console.WriteLine("\n=== Flags Enum ===");
            Permissions userPermissions = Permissions.Read | Permissions.Write;
            Console.WriteLine($"User permissions: {userPermissions}");
            Console.WriteLine($"Can read: {userPermissions.HasFlag(Permissions.Read)}");
            Console.WriteLine($"Can execute: {userPermissions.HasFlag(Permissions.Execute)}");

            userPermissions |= Permissions.Execute;
            Console.WriteLine($"After adding execute: {userPermissions}");

            userPermissions &= ~Permissions.Write;
            Console.WriteLine($"After removing write: {userPermissions}");

            Console.WriteLine("\n=== Enum Methods ===");
            Console.WriteLine($"Enum name for 3: {Enum.GetName(typeof(DayOfWeek), 3)}");
            Console.WriteLine($"Is 7 defined? {Enum.IsDefined(typeof(DayOfWeek), 7)}");

            Console.WriteLine("\n=== Switch with Enum ===");
            switch (today)
            {
                case DayOfWeek.Monday:
                    Console.WriteLine("Start of the work week");
                    break;
                case DayOfWeek.Friday:
                    Console.WriteLine("Almost weekend!");
                    break;
                case DayOfWeek.Saturday:
                case DayOfWeek.Sunday:
                    Console.WriteLine("Weekend!");
                    break;
                default:
                    Console.WriteLine("Regular work day");
                    break;
            }

            Console.WriteLine("\n=== Enum Conversion ===");
            Size shirtSize = Size.Medium;
            byte sizeValue = (byte)shirtSize;
            Console.WriteLine($"Shirt size: {shirtSize}, value: {sizeValue}");
        }
    }
}
Output
=== Basic Enum Usage ===
Today is: Wednesday
Numeric value: 3
Parsed day: Friday

=== Enum with Explicit Values ===
Status code: Success (200)

=== Enum Iteration ===
Sunday = 0
Monday = 1
Tuesday = 2
Wednesday = 3
Thursday = 4
Friday = 5
Saturday = 6

=== Flags Enum ===
User permissions: Read, Write
Can read: True
Can execute: False
After adding execute: Read, Write, Execute
After removing write: Read, Execute

=== Enum Methods ===
Enum name for 3: Wednesday
Is 7 defined? False

=== Switch with Enum ===
Regular work day

=== Enum Conversion ===
Shirt size: Medium, value: 2
Test your knowledge: C# Enums - Complete Guide
Quiz Configuration
4 of 8 questions
Sequential
Previous allowed
Review enabled
Early close allowed
Estimated time: 5 min
C# OOPTopic 53 of 55
←PreviousPrevNextNext→