" kann nicht in der Definition eines lambda-Ausdrucks innerhalb derselben Initialisierungsliste verwendet werden - Visual Basic | Microsoft Learn" data-list-item-url="/dotnet/visual-basic/misc/bc36549" data-list-source="module" data-resource-type="" data-bi-name="add-to-list" aria-describedby="popover-content" aria-expanded="false" > Speichern
Die anonyme Typeigenschaft „<Eigenschaftenname>“ kann nicht in der Definition eines Lambdaausdrucks innerhalb derselben Initialisierungsliste verwendet werden.
In der Initialisierungsliste eines anonymen Typs definierte Eigenschaften können nicht Teil der Definition eines Lambda-Ausdrucks in derselben Liste sein. Beispielsweise darf im folgenden Code die Num
-Eigenschaft nicht in der Definition von LambdaFun
enthalten sein.
' Not valid.
'Dim anon = New With {.Num = 4, .LambdaFun = Function() .Num > 0}
Fehler-ID: BC36549
Teilen Sie den anonymen Typ in zwei Teile:
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))
Wenn Sie
anon1.Num
alsKey
-Eigenschaft deklarieren, kann der zugehörige Wert nicht geändert werden.Als Alternative können Sie eine reguläre Function-Anweisung verwenden, um auf die anonyme Typeigenschaft zuzugreifen:
Function testNum(ByVal n As Integer) As Boolean Return n > 0 End Function Console.WriteLine(testNum(anon1.Num))
Auf ähnliche Weise können Sie eine außerhalb des anonymen Typs definierte Lambda-Funktion verwenden:
Dim lambdaFun1 = Function() anon1.Num > 0 Dim lambdaFun2 = Function(n As Integer) n > 0