本文实例讲述了C#静态构造函数用法。分享给大家供大家参考。具体如下:
当我们想初始化一些静态变量的时候,就需要用到静态构造函数了。这个静态构造函数属于类,而不属于实例,就是说这个构造函数只会被执行一次,即:在创建第一个实例或引用任何静态成员之前,由.NET自动调用。
现在碰到这样一个场景:提供一个静态方法,这个静态方法在不同的地方使用,涉及到一个参数值不同,而其他内容都完全一致。如果是将静态方法的内容复制出来做成另外一个方法,代码冗余太多,做法不可取。使用静态构造函数处理静态变量,则可以尽最大程度简化代码。如下示例:
///<summary> ///基类 ///</summary> publicclassA { publicstaticstringField="original-test"; //静态构造函数 staticA() { Field="test-a"; } publicstaticvoidTest() { Console.WriteLine("theoutputis:"+Field); } } ///<summary> ///子类 ///</summary> publicclassB:A { //静态构造函数 staticB() { Field="test-b"; } publicstaticnewvoidTest() { A.Test(); //调用基类方法,这个对基类Test函数的覆盖很重要,没有这个,那么调用B.Test()的时候其实是调用基类的Test方法。 } }
如代码所示,类型B继承于基类型A。B中的静态构造函数对静态变量Field进行赋值,这个会在调用子类中的Test方法之前调用,而B中Test方法的实现则是完全调用基类A的Test方法,这样,在方法执行的时候,方法中使用的静态变量Field的值就是在B的静态构造函数中赋值之后的test-b。
调用结果如下:
staticvoidMain(string[]args) { A.Test();//输出theoutputis:test-a B.Test();//输出theoutputis:test-b Console.ReadLine(); }
A.Test()调用,Field值为test-a;而B.Test()调用,Field值为test-b。
这样,当静态方法的实现逻辑复杂的时候,就可以针对需要将这个方法进行个性化实现的需求的时候简化代码:子类在静态构造函数中对静态变量重新赋值,然后重新实现基类中的静态方法。
(注意,后面的重新实现基类中的静态方法是必须的,否则输出B.Test()的时候,调用基类的Test()方法,使用的Field变量则是基类中的变量,那时输出则变成如下:)
staticvoidMain(string[]args) { A.Test();//输出theoutputis:test-a B.Test();//输出theoutputis:test-a。 //因为没有覆盖子类方法,等同于A.Test() Console.ReadLine(); }
希望本文所述对大家的C#程序设计有所帮助。
上述就是C#学习教程:C#静态构造函数用法实例分析分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)! 您可能感兴趣的文章:C#静态变量与静态方法实例研究C#静态构造函数使用
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/906634.html