vb.net - new - vb net list of string add item
List.ForEach en vb.net-desconcertándome (1)
Es porque usaste Function
lugar de Sub
. Dado que una Function
devuelve un valor, el compilador considera que el signo igual (=) se usa como una comparación, no una asignación. Si cambia la Function
a Sub
, el compilador consideraría correctamente el signo igual como una asignación:
TempList.ForEach(Sub(obj) obj.Deleted = True)
Si tuvieras una lambda multilínea; no habrías tenido este problema
TempList.ForEach(Function(obj)
obj.Deleted = True
Return True
End Function)
Obviamente, para el método ForEach no tiene sentido usar una Function
porque no se usaría el valor de retorno, por lo que debería usar un Sub
.
Considere el siguiente ejemplo de código:
TempList.ForEach(Function(obj)
obj.Deleted = True
End Function)
Y éste:
TempList.ForEach(Function(obj) obj.Deleted = True)
Yo esperaría que los resultados fueran los mismos, sin embargo, el segundo ejemplo de código NO cambia los objetos en la lista TempList.
Esta publicación es más para entender por qué ...? O al menos obtener ayuda para entender por qué ...