Jon Jagger
jon@jaggersoft.com
Table of Contents 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Notes DownloadECMA-334 C# Language Specificationpreviousnextprevious at this levelnext at this level 17 Classesprevious at this levelnext at this level 17.4 Fieldsprevious at this levelnext at this level 17.4.2 Readonly fieldsprevious at this levelnext at this level 17.4.2.2 Versioning of constants and static readonly fields Paragraph 11 Constants and readonly fields have different binary versioning semantics. 2 When an expression references a constant, the value of the constant is obtained at compile-time, but when an expression references a readonly field, the value of the field is not obtained until run-time. [Example: Consider an application that consists of two separate programs:
using System;  
namespace Program1  
{  
   public class Utils  
   {  
      public static readonly int X = 1;  
   }  
}  
namespace Program2  
{  
   class Test  
   {  
      static void Main() {  
         Console.WriteLine(Program1.Utils.X);  
      }  
   }  
}  
The Program1 and Program2 namespaces denote two programs that are compiled separately. Because Program1.Utils.X is declared as a static readonly field, the value output by the Console.WriteLine statement is not known at compile-time, but rather is obtained at run-time. Thus, if the value of X is changed and Program1 is recompiled, the Console.WriteLine statement will output the new value even if Program2 isn't recompiled. However, had X been a constant, the value of X would have been obtained at the time Program2 was compiled, and would remain unaffected by changes in Program1 until Program2 is recompiled. end example]
{ JSL }
Jagger Software Ltd
Company # 4070126
VAT # 762 5213 42
Valid HTML 4.01Valid CSS