如何对实例变量使用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,因为它不是委托类型

如何对实例变量使用lazy

最简单的可能是通过lambda:

Lazy<myType> lazymt1 = new Lazy<myType>( 
       () => MyStaticClassMethod.GetFor( someid )
   );

你还需要在构造函数中初始化Lazy对象来访问隐式对象引用:

private Lazy<myType> lazymt1;
public classA()
{
    lazymt1 = new Lazy<myType>(() => MyStaticClassMethod.GetFor(someid));
}