我目前正在查看一些旧代码,我遇到了一个使用私有静态属性的类,该属性使用默认值创建并且从未修改;像这样的——
public class Foo
{
private static readonly string ConnectionString = ConfigurationManager.ConnectionStrings["SqlConnection"].ToString();
public Bar GetBar(int barId)
{
// get bar using "ConnectionString" above
}
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是 -ConnectionString保持静态有什么好处吗?即ConfigurationManager.ConnectionStrings["SqlConnection"].ToString();每次运行时new Foo()都运行从而使属性的静态值变得多余,因为它在每次类初始化时都会被覆盖?
静态字段在实例化该类的第一个对象时初始化一次,而不是每次创建对象时。这使得它们相对高效。
然而,这样做有一个缺点,那就是实例级构造函数装饰有一个状态机,用于确定一次性初始化是否已完成。
当创建类的第一个对象时,静态构造函数将在任何其他代码在实例级别执行之前被调用。对于后续的实例化,这一步将被跳过,因为该类已经被初始化。
这个额外的代码是在编译期间生成的,它使每个实例级构造函数比没有静态成员时慢一点。
| 归档时间: |
|
| 查看次数: |
2479 次 |
| 最近记录: |