iJa*_*ade 9 c# asp.net static constructor
首先,我得到了一个答案:静态构造函数的用途是什么?,但我想在这方面得到答案.
这是我的C#静态类:
public static class BasicClass
{
static int i = 0;
static BasicClass()
{
i = 10;
}
public static void Temp()
{
//some code
}
public static void Temp1()
{
//some code
}
}
Run Code Online (Sandbox Code Playgroud)
在这里我有一个静态变量i,在第一次调用时初始化为10.所以基本上它可能是静态构造函数的目的,但是如果不通过初始化声明静态构造函数来实现同样的事情,那么static int i = 10
它只能被初始化一次.
那为什么我们需要一个静态构造函数呢?或者我在理解静态构造函数的概念或使用方面完全错误了吗?
Fré*_*idi 23
如果将该类编译为程序集,然后使用ILSpy或类似的方法来反汇编结果,您会注意到所有静态成员初始化都是在静态构造函数中执行的.
例如,以下C#代码:
public static class BasicClass
{
static int i = 10;
}
Run Code Online (Sandbox Code Playgroud)
将产生相当于IL的IL:
public static class BasicClass
{
static int i;
static BasicClass()
{
i = 10;
}
}
Run Code Online (Sandbox Code Playgroud)
换句话说,直接初始化只是C#编译器提供的语法糖.在引擎盖下,仍然实现了静态构造函数.
那么,在你的例子中它确实不需要,但想象什么时候i必须从数据库,文本文件或任何其他资源中读取值?您可能需要以下内容:
static BasicClass()
{
using (SomeConnection con = Provider.OpenConnection())
{
try
{
// Some code here
}
catch
{
// Handling expeptions, setting default value
i = 10;
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在无法声明和初始化静态字段,使用静态构造函数可以更好地服务
| 归档时间: |
|
| 查看次数: |
8224 次 |
| 最近记录: |