Working with Static Classes and Static Methods in C#

CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More.

C# Programming Guide
Static classes and methods are an important part of the C# programming language. They provide a way to create and use class and method members without creating an instance of the class. This can be useful in a number of situations, such as when you need to create a utility class with methods that don’t require any state information.

In this C# programming tutorial, we will take a look at how we can work with static classes and methods in C#. We will also look at some of the advantages and disadvantages of using them in your .NET applications and software.

Read: A Primer to Object-Oriented Programming (OOP)

What is a Static Class?

A static class in C# is one that cannot be inherited or instantiated and only contains static members. This type of class can only contain static members that include fields, properties, methods, and so forth.

Static classes are sealed, which prevents them from being extended. You can take advantage of static classes to store utility or helper methods. If you need to call a static method from another class, you can do so using the class name, followed by the method name, as shown below in the syntax example below:


For example, if you have a static class called Utilities with a static method called Add, you can call it like this:

Utilities.Add(5, 10);

Here’s a simple example of how to create a static class in C#:

public static class Utilities 
  public static void DisplayMessage(string message)

As you can see, the Utilities class contains a single static method called DisplayMessage(). To call this method, we can simply use the following C# code snippet:

Utilities.DisplayMessage("This is a test message...");

Read: C# Tools for Code Quality

Why Do We Need a Static Class?

A static class is used to group related static members of a class. Static classes cannot be instantiated and are therefore not available for use in the same way as a regular class. The main purpose of a static class is to restrict creating instances of a class and improve code readability by grouping related functionality together that does not need to be associated with an object.

For example, if you wanted to create a set of helper methods for working with dates, you could put all your helper methods in an independent class library and add the library as a reference when needed within your project.

What are Static Methods?

A static method is one that is declared in a class by specifying the keyword static in the method signature. Since a static method belongs to a class and not to an instance of the class, you do not need an instance of a class to call its static members. Static methods are often used for utility functions or helper functions that don’t need to work with any specific instance of a class.

In C#, static methods are declared using the static keyword. For example:

public static void Main() 
   Console.WriteLine("Hello, world!"); 

To call a static method, you use the class name followed by the method name as shown here: ClassName.MethodName().

For example, if you have a static method named GetDbContext() in a class named DbHelper, you would call it like this: DbHelper.GetDbContext().

It is important to remember that static methods can only access other static members of their class. They can not access non-static members (instance variables and methods) of their own class or any other class.

One common use of static methods is creating extension methods. Extension methods allow you to add new methods to existing types without having to modify the original type.

Points to Remember on Static Methods

When working with static methods in C#, there are a few points that you should keep in mind. First, static methods can only be called from other static members of the same class only. They cannot be called from instance methods. Second, static methods cannot access instance variables. They can only access static variables. Finally, static methods cannot be overridden.

Read: Productivity Tools for .NET Developers

What are Static Constructors?

Static constructors are a special type of constructor for a type that only contains static members. The most important difference between static and instance constructors is that static constructors cannot be overridden, nor do they have any access modifiers. They also do not have parameters, so you can not use them to pass in any values when instantiating the object. Note that although you can have a static constructor for a class, you cannot have a static destructor.

A static constructor is used to initialize any static data of the class it belongs to or to accomplish a specific operation that only has to be done only once. Static constructors will only be called once per class per assembly. However, this occurs automatically when you access a static member of the class or create the first instance of the class.

Why Do We Need Static Methods?

There are several reasons why developers might want to use static methods in their C# code. First, static methods can be used as utility functions that don’t require an instance of a class to be invoked. This can be handy when you want to perform some operation that does not necessarily need access to any data or state in a class.

Another advantage of static methods is that they can be invoked without having to create an instance of a class. This can be useful when you want to perform some one-time initialization tasks, or when you want to call a method from within another method without having to create an instance of the containing class.

Programmers can take advantage of static methods to implement the Singleton pattern, which is a design pattern that guarantees that a class has only one instance.

Points to Remember on Static Methods

Static methods are bound to a class and not to an instance of it. Hence you don’t need an instance to call a static method. You can leverage static methods to perform initialization tasks such as initialize the database connection.

Final Thoughts on C# Static Classes and Methods

Static classes and methods help write reusable code. However, you cannot mock static methods easily or even unit test static methods easily. To unit test static methods, you can use delegates. Static classes cannot be extended from any class. However, they extend the Object class implicitly.

Read more C# programming tutorials and software development guides.

Joydip Kanjilal
Joydip Kanjilal
A Microsoft Most Valuable Professional in ASP.NET, Speaker, and Author of several books and articles. More than 25 years of experience in IT with more than 18 years in Microsoft .NET and its related technologies. He was selected as a Community Credit Winner at several times. He has authored 8 books and more than 500 articles in some of the most reputed sites worldwide including MSDN, Info World, CodeMag, Tech Beacon, Tech Target, Developer, CodeGuru, and more.

More by Author

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Must Read