创建或返回缓存的对象
本文关键字:对象 缓存 返回 创建 | 更新日期: 2023-09-27 18:34:31
我发现自己写了很多这样的代码:
private Foo _CacheFoo;
public Foo GetFoo() {
if (this._CacheFoo == null) {
this._CacheFoo = new Foo();
}
return this.CacheFoo;
}
private Bar _CacheBar;
public Bar GetBar() {
if (this._CacheBar == null) {
this._CacheBar = new Bar();
}
return this._CacheBar;
}
我想知道是否有一种明智的方法来封装其中的缓存部分。
您可以使用Lazy<T>
:
private Lazy<Foo> _foo = new Lazy<Foo>(() => new Foo());
public Foo GetFoo()
{
return _foo.Value;
}
尽管要返回的每个实例键入的内容仍然相对较多。
好吧,你可以使用一些语法糖,它略微减少了代码量:
private Foo _CacheFoo;
public Foo GetFoo()
{
return _CacheFoo ?? (_CacheFoo = new Foo());
}