Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Vlastnosti definované v seznamu inicializace anonymního typu nemohou být součástí definice výrazu lambda ve stejném seznamu. Například v následujícím kódu nelze vlastnost Num zahrnout do definice LambdaFun.
' Not valid.
'Dim anon = New With {.Num = 4, .LambdaFun = Function() .Num > 0}
ID chyby: BC36549
Oprava této chyby
Zvažte rozdělení anonymního typu na dvě části:
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))Všimněte si, že pokud deklarujete
anon1.NumjakoKeyvlastnost, její hodnotu nelze změnit.Alternativou je použití regulárního příkazu funkce pro přístup k vlastnosti anonymního typu:
Function testNum(ByVal n As Integer) As Boolean Return n > 0 End Function Console.WriteLine(testNum(anon1.Num))Podobně můžete použít funkci lambda definovanou mimo anonymní typ:
Dim lambdaFun1 = Function() anon1.Num > 0 Dim lambdaFun2 = Function(n As Integer) n > 0