9

なぜこれを行うのですか:

Private [Function] As Func(Of Double, String) = Function(ByRef z As Double) z.ToString

次のエラーが発生します。

ネストされた関数には、デリゲート String) と互換性のあるシグネチャがありません。

これの間:

Private [Function] As Func(Of Double, String) = Function(ByVal z As Double) z.ToString

ではない?(違いは ByRef/ByVal です)

さらに、どうすればそのようなことを実装できますか?

4

2 に答える 2

6

MSDNでは、次の規則がラムダ式の変数スコープに適用されることが言及されています

  • キャプチャされた変数は、それを参照するデリゲートがスコープ外になるまでガベージ コレクションされません。
  • ラムダ式内で導入された変数は、外側のメソッドでは表示されません。
  • ラムダ式は、外側のメソッドから ref [VB の ByRef] または out パラメータを直接キャプチャすることはできません。
  • ラムダ式の return ステートメントは、外側のメソッドを返しません。
  • ラムダ式には、ターゲットが本体の外側または含まれる無名関数の本体内にある goto ステートメント、break ステートメント、または continue ステートメントを含めることはできません。
于 2011-03-09T00:42:50.683 に答える