Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As propriedades definidas na lista de inicialização de um tipo anônimo não podem fazer parte da definição de uma expressão lambda na mesma lista. Por exemplo, no código a seguir, a propriedade Num não pode ser incluída na definição de LambdaFun.
' Not valid.
'Dim anon = New With {.Num = 4, .LambdaFun = Function() .Num > 0}
ID do erro: BC36549
Para corrigir este erro
Considere dividir o tipo anônimo em duas partes:
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))Observe que, se você declarar
anon1.Numcomo uma propriedadeKey, o valor não poderá ser alterado.Uma alternativa é usar uma instrução de função regular para acessar a propriedade de tipo anônimo:
Function testNum(ByVal n As Integer) As Boolean Return n > 0 End Function Console.WriteLine(testNum(anon1.Num))Da mesma forma, você pode usar uma função lambda definida fora do tipo anônimo:
Dim lambdaFun1 = Function() anon1.Num > 0 Dim lambdaFun2 = Function(n As Integer) n > 0