匿名型の初期化リストで定義されたプロパティは、同じリスト内のラムダ式の定義に含めることはできません。 たとえば、次のコードでは、プロパティ Num を LambdaFunの定義に含めることはできません。
' Not valid.
'Dim anon = New With {.Num = 4, .LambdaFun = Function() .Num > 0}
エラー ID: BC36549
このエラーを解決するには
匿名型を 2 つの部分に分割することを検討してください。
Dim anon1 = New With {.Num = 4} Dim anon2 = New With {.LambdaFun = Function() anon1.Num > 0} ' - or - Dim anon3 = New With {.lambdaFun = Function(n As Integer) n > 0} Console.WriteLine((anon2.LambdaFun)()) Console.WriteLine(anon3.lambdaFun(anon1.Num)) anon1.Num = -5 Console.WriteLine((anon2.LambdaFun)()) Console.WriteLine(anon3.lambdaFun(anon1.Num))anon1.NumをKeyプロパティとして宣言する場合は、その値を変更できません。または、通常の関数ステートメントを使用して、匿名型のプロパティにアクセスします。
Function testNum(ByVal n As Integer) As Boolean Return n > 0 End Function Console.WriteLine(testNum(anon1.Num))同様に、匿名型の外部で定義されているラムダ関数を使用できます。
Dim lambdaFun1 = Function() anon1.Num > 0 Dim lambdaFun2 = Function(n As Integer) n > 0
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET