我有一个继承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方法,但所有项目都保留其先前的值...
答案 0 :(得分:2)
在.net 3.5中,VB无法区分等于运算符和集合运算符,因为两者都是“=”,编译器选择了等式检查(我知道很奇怪)。在.net 4.0中,您可以在lambda函数中使用set运算符而不会出现问题,但在.net 3.5中,您不能在VB中使用。