Общий метод расширения списка ForEach перестал работать? - PullRequest
1 голос
/ 16 декабря 2010

У меня есть собственный список, который наследует 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 Ответ

2 голосов
/ 16 декабря 2010

В .net 3.5 VB нет способа отличить оператор равенства от оператора набора, поскольку оба являются "=", и компилятор выбирает проверку на равенство (странно, я знаю).В .net 4.0 вы можете без проблем использовать операторы множеств в лямбда-функциях, но в .net 3.5 вы не можете в VB.

...