Where to use #region directive in C#?

The #region directive in C# is a preprocessor directive that allows you to specify a block of code that can be collapsed or expanded in code editors like Visual Studio. This feature improves code organization and readability by grouping related code sections together.

The #region directive must always be paired with a corresponding #endregion directive to mark the end of the collapsible block.

Syntax

Following is the syntax for using the #region directive −

#region Region Name or Description
// Code block that can be collapsed
#endregion

Basic Usage of #region

Example

using System;

#region Class Definition
public class Student {
   public string Name { get; set; }
   public int Age { get; set; }
   
   public void DisplayInfo() {
      Console.WriteLine($"Name: {Name}, Age: {Age}");
   }
}
#endregion

#region Main Program
class Program {
   static void Main() {
      Student student = new Student();
      student.Name = "John";
      student.Age = 20;
      student.DisplayInfo();
   }
}
#endregion

The output of the above code is −

Name: John, Age: 20

Common Use Cases for #region

#region Use Cases Properties & Fields #region Properties Constructors #region Constructors Event Handlers #region Event Handlers Private Methods #region Private Methods Interface Implementation #region IDisposable Organize code sections for better readability

Example

using System;

public class Employee {
   
   #region Fields and Properties
   private string name;
   private int id;
   private double salary;
   
   public string Name {
      get { return name; }
      set { name = value; }
   }
   
   public int ID {
      get { return id; }
      set { id = value; }
   }
   #endregion
   
   #region Constructors
   public Employee() {
      name = "Unknown";
      id = 0;
      salary = 0.0;
   }
   
   public Employee(string name, int id, double salary) {
      this.name = name;
      this.id = id;
      this.salary = salary;
   }
   #endregion
   
   #region Public Methods
   public void DisplayEmployee() {
      Console.WriteLine($"ID: {id}, Name: {name}, Salary: ${salary}");
   }
   
   public void GiveRaise(double amount) {
      salary += amount;
      Console.WriteLine($"{name} received a raise of ${amount}");
   }
   #endregion
   
   #region Private Helper Methods
   private bool ValidateSalary(double amount) {
      return amount >= 0;
   }
   #endregion
}

class Program {
   static void Main() {
      Employee emp = new Employee("Alice", 101, 50000);
      emp.DisplayEmployee();
      emp.GiveRaise(5000);
      emp.DisplayEmployee();
   }
}

The output of the above code is −

ID: 101, Name: Alice, Salary: $50000
Alice received a raise of $5000
ID: 101, Name: Alice, Salary: $55000

Nested Regions

You can nest #region directives within each other for more granular organization −

Example

using System;

#region Calculator Class
public class Calculator {
   
   #region Arithmetic Operations
   
   #region Basic Operations
   public int Add(int a, int b) {
      return a + b;
   }
   
   public int Subtract(int a, int b) {
      return a - b;
   }
   #endregion
   
   #region Advanced Operations  
   public double Power(double baseNum, double exponent) {
      return Math.Pow(baseNum, exponent);
   }
   
   public double SquareRoot(double number) {
      return Math.Sqrt(number);
   }
   #endregion
   
   #endregion
   
}
#endregion

class Program {
   static void Main() {
      Calculator calc = new Calculator();
      Console.WriteLine("Addition: " + calc.Add(10, 5));
      Console.WriteLine("Power: " + calc.Power(2, 3));
      Console.WriteLine("Square Root: " + calc.SquareRoot(16));
   }
}

The output of the above code is −

Addition: 15
Power: 8
Square Root: 4

Best Practices

  • Use descriptive names for regions that clearly indicate what code they contain.

  • Group related functionality together within regions.

  • Avoid creating too many nested regions as it can make code harder to navigate.

  • Consider using regions for large classes with many methods and properties.

Conclusion

The #region directive is a useful tool for organizing and structuring C# code by creating collapsible sections in code editors. It improves code readability and navigation, especially in large classes with many members, by grouping related functionality together.

Updated on: 2026-03-17T07:04:35+05:30

4K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements