码迷,mamicode.com
首页 > Windows程序 > 详细

《C#高效编程》读书笔记13-正确的初始化静态成员变量

时间:2017-12-19 15:22:58      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:单例   读书笔记   空间   高效   变量   code   没有   静态成员   复杂   

在创建某个类型实例之前,就应该初始化该实例的所有静态成员变量。而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将不会再次进行初始化尝试。

《C#高效编程》读书笔记13-正确的初始化静态成员变量

标签:单例   读书笔记   空间   高效   变量   code   没有   静态成员   复杂   

原文地址:http://www.cnblogs.com/kw13202/p/8064770.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!