3

鉴于下面的代码

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,因为它不是委托类型

4

1 回答 1

4

最简单的可能是通过 lambda:

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

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

private Lazy<myType> lazymt1;

public classA()
{
    lazymt1 = new Lazy<myType>(() => MyStaticClassMethod.GetFor(someid));
}
于 2013-05-17T15:39:27.637 回答