C#箴言:用静态构造函数初始化静态成员

C#箴言:用静态构造函数初始化静态成员,第1张

C#箴言:用静态构造函数初始化静态成员,第2张

写程序的时候不可避免的要用到静态成员。因为静态成员的访问是与类型对象分离的,所以使用非静态构造函数、私有方法或其他一些方法是不合理的。。net提供成员初始化语句和静态构造函数来初始化静态成员。

根据上一单元我们可以知道静态成员的初始化语句会在静态构造函数之前执行,其次我们也知道了成员初始化语句的好处和一些限制。这里要提到的一点是静态构造函数和实例构造函数的区别。因为静态构造函数是由CLR调用和执行的,所以静态构造函数只能是一个,不能同时有参数。那么静态构造函数在成员初始化方面的一些缺点就不再存在了。

此外,对于成员的初始化,异常不能被捕获。可能对于普通会员来说,试抓;可以在构造类型对象时添加。对于静态成员,有时无法确定首先执行哪种类型的访问语句。如果在每个使用该类型的地方都添加try-catch,会降低程序的可读性。但是,如果这个异常被分发,整个程序就会崩溃。那么静态构造函数可以更好地捕捉异常并处理它。

静态成员初始化语句和静态构造函数的比较如下。

简单的安全异常处理
静态成员初始化最简单、更安全、更困难
静态构造函数更简单、更安全、更容易。

那么用什么方法初始化静态成员呢?这里有两个建议:

首先,简单的静态成员(如值类型)是通过使用成员初始化语句来完成的。

如果第二个静态成员的初始化很复杂,或者可能有异常,则使用静态构造函数来完成它。

这一单元的内容基本讲完了。现在来说说静态成员“Singleton”最重要的应用,就是保证这种类型的客观性。其实实现很简单。这里有一个简单的例子。

public class MySingleton
{
private static readonly MySingleton _ theOneAndOnly;
static MySingleton()
{
_ theOneAndOnly = new MySingleton();
}
public static MySingleton the only
{
get { return _ the oneandonly;}
}

////
///私有构造函数,以避免从外部创建对象
///

private MySingleton()
{ }
}

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C#箴言:用静态构造函数初始化静态成员

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情