【发布时间】:2011-06-04 17:58:17
【问题描述】:
我目前正在更改一个广泛使用的类,以将尽可能多的昂贵初始化从类构造函数转移到惰性初始化属性中。下面是一个示例(在 c# 中):
之前:
public class ClassA
{
public readonly ClassB B;
public void ClassA()
{
B = new ClassB();
}
}
之后:
public class ClassA
{
private ClassB _b;
public ClassB B
{
get
{
if (_b == null)
{
_b = new ClassB();
}
return _b;
}
}
}
在我正在更改的类中还有很多这样的属性,有些在某些情况下没有使用(因此称为 Laziness),但如果使用它们,它们很可能会被重复调用。
不幸的是,这些属性也经常在类内部使用。这意味着私有变量 (_b) 有可能被方法直接使用而无需初始化。
有没有办法在类中只提供公共属性 (B),或者甚至是具有相同初始化时需要的替代方法?
这是从程序员转发的(显然不够主观): https://softwareengineering.stackexchange.com/questions/34270/best-methods-for-lazy-initialization-with-properties
【问题讨论】:
-
@chibacity:感谢您的重新标记
标签: c# c#-3.0 recommendation-engine lazy-initialization