鉴于以下代码
public class classA
{
int someid ;
public classA( int x ) { someid = x; }
Lazy<myType> lazymt1 = new Lazy<myType>(
return MyStaticClassMethod.GetFor( someid ); // problem statement - how should this be coded ?
);
public myType GetMyType { return lazymt1.value ; }
}
如何传递变量someid
并编码Func<myType>
?
更新 - 这是我到目前为止所做的和结果
Lazy<myType> lazymt1 = new Lazy<myType>( () => MyStaticClassMethod.GetFor( someid ) );
以上行不编译,红色波浪线表示
无法将lambda表达式转换为LazyThreadSafetyMode,因为它不是委托类型
答案 0 :(得分:3)
最简单的可能是通过lambda:
Lazy<myType> lazymt1 = new Lazy<myType>(
() => MyStaticClassMethod.GetFor( someid )
);
您还需要在构造函数中初始化Lazy
对象以访问隐式对象引用:
private Lazy<myType> lazymt1;
public classA()
{
lazymt1 = new Lazy<myType>(() => MyStaticClassMethod.GetFor(someid));
}