Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Le proprietà definite nell'elenco di inizializzazione di tipo anonimo non possono far parte di una definizione di un'espressione lambda nello stesso elenco. Ad esempio, nel codice seguente, la proprietà Num non può essere inclusa nella definizione dell'oggetto LambdaFun.
' Not valid.
'Dim anon = New With {.Num = 4, .LambdaFun = Function() .Num > 0}
ID errore: BC36549
Per correggere l'errore
È consigliabile suddividere il tipo anonimo in due parti:
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))Notare che se si dichiara l'oggetto
anon1.Numcome una proprietàKey, non è possibile modificarne il valore.In alternativa è possibile usare un'istruzione Function normale per accedere alla proprietà di tipo anonimo:
Function testNum(ByVal n As Integer) As Boolean Return n > 0 End Function Console.WriteLine(testNum(anon1.Num))Allo stesso modo, è possibile usare una funzione lambda definita al di fuori del tipo anonimo:
Dim lambdaFun1 = Function() anon1.Num > 0 Dim lambdaFun2 = Function(n As Integer) n > 0