Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
Примечание: Это касается более старых версий VB.net До Visual Studio 2010 и VB.net 10
, различие - то, что в VB.Net лямбда-выражение должно возвратить значение, т.е. они должны быть функциями не замены. Лямбда-выражение eventRaised = true
интерпретируется как булево выражение, а не присвоение т.е. оценивает ко лжи вместо того, чтобы установить на истинный.
Более подробная информация о MSDN.
я, не думают, что c# шаблон для тестирования событий, используемых в примере, может быть сделан в VB.Net, не представляя другую функцию, например,
<TestFixture()> _
Public Class Test
<Test()> _
Public Sub EventTest()
Dim eventClass As New EventClass
Dim eventRaised As Boolean = False
AddHandler eventClass.AnEvent, Function() (SetValueToTrue(eventRaised))
eventClass.RaiseIt()
Assert.IsTrue(eventRaised)
End Sub
Private Function SetValueToTrue(ByRef value As Boolean) As Boolean
value = True
Return True
End Function
End Class
Public Class EventClass
Public Event AnEvent()
Public Sub RaiseIt()
RaiseEvent AnEvent()
End Sub
End Class
Короче говоря, Вы не можете сделать этого в VB в настоящее время (это находится в списке функций, которые рассматривают для следующего выпуска). Необходимо использовать заявленный метод и оператор AddressOf.
у команды VB не было времени для включения анонимных делегатов в язык (который является тем, что Вы пытаетесь использовать, технически не лямбда-выражение).
Лямбда-выражения они должны были реализовать так, чтобы Linq мог на самом деле работать. Анонимные делегаты не требуются ничем (но было бы довольно полезно). Я предполагаю, что они провели больше времени при оборачивании вещей как Linq К XML и побережьям XML и интеграции большего количества операторов запроса в синтаксисе...