我发现自己经常写这样的东西,其中foo是数据密集型操作,可能会或可能不会被调用。
private bool? _UseCapitalAssets;
public bool UseCapitalAssets
{
get
{
if (_UseCapitalAssets == null)
{
return foo();
}
else
{
return _UseCapitalAssets.Value;
}
}
}
这样做只允许我在需要时重新使用数据。我怎样才能把它变成更通用的东西?
我想写一些类似的东西:
public class Lazy<T>
{
private T _value;
private bool lazySet = false;
private Func<T> _method;
public Lazy(Func<T> method)
{
_method = method;
}
public T Value
{
get
{
if (lazySet == false)
{
_value = _method();
lazySet = true;
}
return _value;
}
}
}
编译,但是当我尝试使用它时:
public Lazy<bool> UserLazy = new Lazy<bool>(fooMethod);
我收到编译错误:&#34;无法访问非静态方法&#39; fooMethod&#39;在非静态环境中#34;
到底有没有?