更新时间:2022-08-14 20:26:43
1. 禁止在一个类的静态构造函数中访问另一个类中的静态成员。
猜下下面这段程序的输出结果:
执行结果:
留意上面的“//static2 has a message from static1:black”,里面取得的字符串值是“blank”,而不是“Hello From Static1”,我们不能确定两个静态构造函数中的两条message赋值语句谁已经执行或没有执行! 这里要记住一条规则:禁止在一个类的静态构造函数中访问另一个类中的静态成员(Avoid touching the static members of another type from within a type constructor)。虽然我们很少情况下会写出上面这种代码,但一旦写出来了,这种错误将很难调试,我们要牢记这样准则。
2. 如果静态构造函数中有异常(用E描述)抛出,则CLR会对E进行包装,重新抛出一个System.TypeInitializationException异常,而把E作为该异常的InnerException。在进行程序设计时,我们一定要保证在类的静态构造函数不能有异常抛出!
3. C#中不支持子类继承父类的静态成员,但却可以通过子类类名来访问父类的静态成员!
反射静态成员的示例:
执行结果:
参考:http://msdn.microsoft.com/msdnmag/issues/05/01/StaticsinNET/default.aspx
本文转自Silent Void博客园博客,原文链接:http://www.cnblogs.com/happyhippy/archive/2007/04/05/710935.html,如需转载请自行联系原作者