Difference Between Constant And ReadOnly

Constants

  • Constants are static by default.
  • They must have a value at compilation-time (you can have e.g. 3.14 * 2 + 5, but cannot call methods).
  • Could be declared within functions.
  • These are copied into every assembly that uses them (every assembly gets a local copy of values).
  1. using System;   
  2. namespace ConstantExample  
  3. {   
  4.     class ConstantExample  
  5.     {          
  6.         private const int PI = 3.14;   
  7.         public static void Main()  
  8.         {  
  9.             //You have to initialize Const variables while declaration  
  10.             const int RollNo = 1284;   
  11.             //Valid scenario  
  12.             const int Age = 10 + 13;   
  13.             const string Name = "Satish Kumar";  
  14.    
  15.             // Reassigning a const variable is not allowed.  
  16.             RollNo = 1405;   // Will result compile time error.  
  17.             Age++;    // Will result compile time error.   
  18.             Console.WriteLine(Name);  
  19.    
  20.             Console.Read();  
  21.         }  
  22.     }  
  23. }  
Readonly
  • Must have set value, by the time constructor exits.
  • Are evaluated when instance is created.
  • You can use static modifier for readonly fields.
  • readonly modifier can be used with reference types.
  • readonly modifier can be used only for instance or static fields, you cannot use readonly keyword for variables in the methods. 
  1. using System;  
  2.    
  3. namespace ReadOnlyExample  
  4. {  
  5.    class ReadOnlyTest   
  6.    {    
  7.       //You have to initilize readonly varabiles while declaration or in constructor  
  8.       readonly int RollNo = 1284;  
  9.    
  10.       //Valid scenario  
  11.       readonly  int Age;  
  12.    
  13.       readonly  string Name = "Satish Kumar";  
  14.   
  15.       //readonly fields can be initlized in constructor  
  16.       public ReadOnlyTest (string name)  
  17.       {  
  18.           Age = 23;  
  19.           Name = name;     
  20.       }  
  21.   
  22.       public changeName(string newName)  
  23.       {  
  24.           Name = "Satish Kumar Vadlavalli"; ;   // Will result error.  
  25.       }  
  26.    }  
  27.    
  28.    class ReadOnlyExample  
  29.    {   
  30.         public static void Main()  
  31.         {    
  32.            ReadOnlyTest obj = new ReadOnlyTest("Satish");     
  33.            Console.Read();    
  34.         }  
  35.    }  
  36. }  
Difference between const and readonly

  • const fields has to be initialized while declaration only, while readonly fields can be initialized at declaration or in the constructor.
  • const variables can declared in methods ,while readonly fields cannot be declared in methods.
  • const fields cannot be used with static modifier, while readonly fields can be used with static modifier.
  • A const field is a compile-time constant, the readonly field can be used for run time constants.
A blog without comments is not a blog at all, but do try to stay on topic. Please comment if you have any questions or leave your valuable feedback. Happy Learning.
Ebook Download
View all
Learn
View all