如何对实例变量使用lazy
本文关键字:lazy 变量 实例 | 更新日期: 2023-09-27 18:14:01
给定下面的代码
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>
进行编码?
UPDATE -这是我到目前为止尝试的结果
Lazy<myType> lazymt1 = new Lazy<myType>( () => MyStaticClassMethod.GetFor( someid ) );
上面的行不能编译,红色弯弯曲曲的行表示
不能将lambda表达式转换为LazyThreadSafetyMode,因为它不是委托类型
最简单的可能是通过lambda:
Lazy<myType> lazymt1 = new Lazy<myType>(
() => MyStaticClassMethod.GetFor( someid )
);
你还需要在构造函数中初始化Lazy
对象来访问隐式对象引用:
private Lazy<myType> lazymt1;
public classA()
{
lazymt1 = new Lazy<myType>(() => MyStaticClassMethod.GetFor(someid));
}