Ответ 1
Это потому, что вы использовали Function
вместо Sub
. Поскольку a Function
возвращает значение, компилятор считает, что знак равенства (=) используется как сравнение, а не назначение. Если вы измените Function
на Sub
, компилятор правильно рассмотрит знак равенства как назначение:
TempList.ForEach(Sub(obj) obj.Deleted = True)
Если у вас была многострочная лямбда; у вас не было бы этой проблемы:
TempList.ForEach(Function(obj)
obj.Deleted = True
Return True
End Function)
Очевидно, что для метода ForEach нет смысла использовать Function
, потому что возвращаемое значение не будет использоваться, поэтому вы должны использовать Sub
.