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