Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Las propiedades definidas en la lista de inicialización de un tipo anónimo no pueden formar parte de una definición de la expresión lambda en la misma lista. Por ejemplo, en el código siguiente, la propiedad Num no puede incluirse en la definición de LambdaFun.
' Not valid.
'Dim anon = New With {.Num = 4, .LambdaFun = Function() .Num > 0}
Identificador de error: BC36549
Para corregir este error
Considere la posibilidad de dividir el tipo anónimo en dos 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))Tenga en cuenta que si declara
anon1.Numcomo una propiedadKey, no se puede cambiar su valor.Como alternativa,puede usar una instrucción de función normal para tener acceso a la propiedad de tipo anónimo:
Function testNum(ByVal n As Integer) As Boolean Return n > 0 End Function Console.WriteLine(testNum(anon1.Num))De forma similar, puede usar una función lambda definida fuera del tipo anónimo:
Dim lambdaFun1 = Function() anon1.Num > 0 Dim lambdaFun2 = Function(n As Integer) n > 0