>>public class Framework >>{ >> public static int SomeCalculatedValue; >> >> static Framework() >> { >> // Lot of complicated code could be here to calculate >> // the value of SomeCalulatedValue but, for simplicity: >> SomeCalculatedValue = 5; >> } >>}>>The constructor code will only fire when the first instance is instantiated. All subequent instantiations (as you would be doing in, for example, Page_Init) would not run the constructor code and would share the SomeCalculatedValue. E.g:
>>Framework f1 = new Framework(); // f1.SomeCalculatedValue set to 5 >>Framework f2 = new Framework(); // Constructor code not run but SomeCalculatedValue = 5; >>f1.SomeCalculatedValue = 6; // Now *all* Framework objects .SomeCalculatedValue will be 6 as well >>>
public class Framework { public static string SayHello() { return "Hello"; } }This method could be used like:
string s = Framework.SayHello(); // Rather than: f = new Framework(); string s = f.SayHello(); // In fact this wouldn't be legal....Lots of native examples of this behaviour in the .NET framework; Guid.NewGuid() is a classic example....