Difference Between Constant,Read Only and static In C#
Oct 17, 2016 02:00 0 Comments C# (C-Sharp) Tomas

                     Difference Between Constant,Read Only and static In C#

Constant and ReadOnly keyword is used to make a field constant whose value cannot be modified. The Static keyword is used to make members static that can be shared by all the class objects. In this article, I am going to explain the difference between these three.


Constant fields or local variables must be assigned a value at the time of declaration and after that, they cannot be modified. By default, constant is static, hence you cannot define a constant type as static.

public const int X = 10;

A const field is a compile-time constant. A constant field or local variable can be initialized with a constant expression which must be fully evaluated at compile time.

void Calculate(int Z)


 const int X = 10, X1 = 50;

 const int Y = X + X1; //no error, since it is evaluated a compile time

 const int Y1 = X + Z; //gives error, since its evaluated at run time


You can apply const keyword to built-in value types (byte, short, int, long, char, float, double, decimal, bool), enum, a string literal, or a reference type which can be assigned with the value null.

const MyClass obj1 = null;//no error, since it is evaluated a compile time

const MyClass obj2 = new MyClass();//gives error, since its evaluated at run time

Constants can be marked as public, private, protected, internal, or protected internal.

Use the const modifier when you sure that the value for a field or local variable would not be changed.


A readonly field can be initialized either at the time of declaration or within the constructor of the same class. Therefore, readonly fields can be used for run-time constants.

class MyClass
 readonly int X = 10; // initialized at the time of declaration
 readonly int X1;
 public MyClass(int x1)
 X1 = x1; // initialized at run time

Explicitly, you can specify a readonly field as static since unlike constant it is not static by default. Readonly keyword can be applied to a value type and reference type (which initialized by using the new keyword) both. Also, the delegate and event could not be readonly.

Use the readonly modifier when you want to make a field constant at run time.


The static keyword is used to specify a static member, which means static members are common to all the objects and they do not tie to a specific object. This keyword can be used with classes, fields, methods, properties, operators, events, and constructors, but it cannot be used with indexers, destructors, or types other than classes.

class MyClass
 static int X = 10;
 int Y = 20;
 public static void Show()
 Console.WriteLine(Y); //error, since you can access only static members

Key points about Static keyword

1.       If the static keyword is applied to a class, all the members of the class must be static.

2.       Static methods can only access static members of the same class. Static properties are used to get or set the value of static fields of a class.

3.       A static constructor can't be parameterized. Access modifiers cannot be applied on Static constructor, it is always a public default constructor which is used to initialize static fields of the class.


Prev Next
About the Author
Topic Replies (0)
Leave a Reply
Guest User

You might also like

Not sure what course is right for you?

Choose the right course for you.
Get the help of our experts and find a course that best suits your needs.

Let`s Connect