Home > DeveloperSection > Forums > difference between constant and read only in C#
Anupam Mishra

Total Post:135

Points:949
Posted on    January-24-2016 10:47 PM

 C# C#  .NET 
Ratings:


 1 Reply(s)
 245  View(s)
Rate this:
Hi..
Please give me a brief introduction about constant and read only in c# and its differences.

Thank you.


Shiva Shukla
Shiva Shukla

Total Post:13

Points:91
Posted on    January-24-2016 10:53 PM

Constant:-
It is a compile-time constant. A field or local variable which is declared as constant can be initialized with a constant expression which must be fully evaluated at compile time.
  1. const int x = 10;  
  2. const int y = 20;  
  3. const int z = x + y;  
  4. Console.WriteLine("The value of x :" + x);  
  5. Console.WriteLine("The value of y :" + y);  
  6. Console.WriteLine("The value of z :" + z);   
  7.   
  8. int a = 15;  
  9. const int b = x + a;  
  10. Console.WriteLine("The value of b :" + b);  
  11. //The variable 'a' is assigned but its value is never used  
You can mark Constants as public, private, protected, internal, or protected internal access modifiers.

When to use

If you think that the value of field or local variable is never changed.

ReadOnly:-
It is same as Constant but it is run time constant. I mean to say that a ReadOnly field or local variable can be initialized either at the time of declaration or inside the constructor of same class. That is why we called it run time constant.
  1. public class MyClassProgram  
  2. {  
  3.    readonly int x = 10;  
  4.    public MyClassProgram()  
  5.    {  
  6.       //changed the value in constructor  
  7.       x = 20;  
  8.    }  
  9. }  
  10. As you know that we cannot declare Constant as static but we can do it for readonly explicitly. By default it is not static. It can be applied to value type and reference type [which initialized by using the new keyword)] both and also with delegate and event

    When to use

    If you think, you need to change the value of variable or field at run time inside the calling constructor, then you need to use the readonly modifier.



Don't want to miss updates? Please click the below button!

Follow MindStick