Unlocking the Power of Static Members in C#
The Basics of Static Members
In C#, when you declare a class member as static, a single copy of that member is created, shared by all objects of the class. This means that every object of the class accesses the same static member, rather than creating individual copies.
Static Variables: Shared Across Objects
Consider a scenario where you have a variable that remains the same for all objects of a class. For instance, a department
variable in a Student
class. By declaring this variable as static, you can access it using the class name, without the need to create an object.
The Difference Between Static and Instance Variables
Unlike instance variables, which have separate copies for each object, static variables are shared across all objects. This distinction is crucial in optimizing memory usage and improving program efficiency.
Example: Static Variable vs. Instance Variable
In the following example, we demonstrate the difference between static and instance variables. The Student
class has both a non-static studentName
variable and a static schoolName
variable.
“`
public class Student
{
public string studentName;
public static string schoolName = “XYZ University”;
}
public class Program
{
public static void Main(string[] args)
{
Student s1 = new Student { studentName = “John” };
Student s2 = new Student { studentName = “Jane” };
Console.WriteLine(s1.studentName); // John
Console.WriteLine(s2.studentName); // Jane
Console.WriteLine(Student.schoolName); // XYZ University
}
}
“`
Static Methods: Efficient and Shared
Just like static variables, static methods can be called using the class name, without the need to create an object. This is particularly useful when you have a method that performs a task that’s independent of any object instance.
Example: Static and Non-Static Methods
In this example, we demonstrate the difference between static and non-static methods. The Test
class has both a non-static display1()
method and a static display2()
method.
“`
public class Test
{
public void display1()
{
Console.WriteLine(“Non-static method”);
}
public static void display2()
{
Console.WriteLine("Static method");
}
}
public class Program
{
public static void Main(string[] args)
{
Test t1 = new Test();
t1.display1(); // Non-static method
Test.display2(); // Static method
}
}
“`
The Limitations of Static Classes
In C#, a static class cannot be instantiated, meaning you cannot create objects of the class. Additionally, all members of a static class must be static, and you cannot inherit a static class.
Accessing Static Members Within the Class
When accessing static variables and methods within the same class, you can do so directly, without using the class name.
“`
public class MyClass
{
public static int age = 25;
public static void display()
{
Console.WriteLine(“Hello, World!”);
}
public static void Main(string[] args)
{
Console.WriteLine(age); // 25
display(); // Hello, World!
}
}
“`