通用列表扩展方法ForEach停止工作了吗?

时间:2010-12-16 16:45:17

标签: .net vb.net foreach generic-list

我有一个继承Generic.List的自定义列表,它有一个取消选择名为DeselectAll的所有成员的方法

看起来已经好几个星期了,并且运作良好。

Public Sub DeselectAll()
    MyBase.ForEach(Function(p As Publipostable) p.ModeEnvoiChoisi = Nothing)
End Sub

今天,它停止了工作?!?我使用代理恢复到早期版本,并且工作正常......

Public Sub DeselectAll()
    MyBase.ForEach(AddressOf DeselectModeEnvoi)
End Sub

Private Sub DeselectModeEnvoi(ByVal p As IPublipostable)
    p.ModeEnvoiChoisi = Nothing
End Sub

有没有人见过这种行为?它位于asp.net 3.5应用程序中。

只是想知道, 萨姆

编辑: 停止工作意味着它不再将属性p.ModeEnvoiChoisi设置为列表中每个项目的Nothing。调用DeselectAll方法,但所有项目都保留其先前的值...

1 个答案:

答案 0 :(得分:2)

在.net 3.5中,VB无法区分等于运算符和集合运算符,因为两者都是“=”,编译器选择了等式检查(我知道很奇怪)。在.net 4.0中,您可以在lambda函数中使用set运算符而不会出现问题,但在.net 3.5中,您不能在VB中使用。