Принимая следующий код в VB2012, я ожидаю Foo быть инициализированы в настоящее время:Если() функции и делегаты в VB
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, код работает должным образом.
Может ли кто-нибудь объяснить это поведение мне?
Ошибка компилятора. Представленный в VS2013, вы можете подать его на сайте connect.microsoft.com –
@ ХансПасант: Также 2010 и 2012. – Neolisk