当前位置:首页 > Windows程序 > 正文

若是要以更复杂一些的逻辑初始化静态成员变量

2024-03-31 Windows程序

在创建某个类型实例之前,就应该初始化该实例的所有静态成员变量。而C#为此供给了静态初始化器和静态结构函数。
静态结构函数是特殊的结构函数,将在其他所有要领执行之前以及变量或属性被第一次访谒之前执行。
若是简单的为某个成员分配空间,可以使用初始化器语法来替代静态结构函数。若是要以更庞大一些的逻辑初始化静态成员变量,那么可以使用静态结构函数。
单例模式是静态结构函数最常用的一个场景,,只需将实例结构函数声明为私有,然后添加初始化器即可:

public class MySingleton { private static readonly MySingleton theOneAndOnly = new MySingleton(); private MySingleton(){} public static MySingleton TheOnly { get { return theOneAndOnly; } } }

如果你还有更庞大的初始化单例的逻辑,则可以使用静态结构函数:

public class MySingleton { private static readonly MySingleton theOneAndOnly; private MySingleton(){} static MySingleton() { theOneAndOnly = new MySingleton(); //other code... } public static MySingleton TheOnly { get { return theOneAndOnly; } } }

静态结构函数对比静态初始化器对比,其长处是可以捕获异常,因为静态结构函数和静态初始化器堕落时,CLR将会终止你的措施,而可以捕获异常的静态结构函数就可以使措施继续运行,但其错误谬误也在此,静态结构函数只能初始化一次,若呈现错误造成某个类型没有初始化,那么CLR将不会再次进行初始化测验考试。

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/35764.html

Jm-杰米博客Jamie
草根站长的技术交流乐园!IT不会不要紧快来好好学习吧!
  • 20786文章总数
  • 7494590访问次数
  • 建站天数
  • 友情链接