Взяв следующий код в VB2012, я ожидаю, что foo будет инициализирован в Nothing:
Dim foo As Func(Of Integer) = If(True, Nothing, Function() 0)
Однако он выдает исключение ArgumentException:
Delegate to an instance method cannot have null 'this'.
Я не совсем понимаю это сообщение об ошибке, но ситуация становится откровенно пугающей, если я изменяю тип foo на Func(Of Integer, Integer). В этом случае код выполняется без ошибок, но foo становится загадочным лямбда-выражением, которое при вызове генерирует исключение NullReferenceException.
Если я использую традиционный оператор If вместо функции If, код работает так, как ожидалось.
Может ли кто-нибудь объяснить мне такое поведение?