2012-09-25 39 views
0

有人可以解释为什么我得到一个NullReference异常到一个objet,我初始化为新列表(Of)??NullReference作为新列表(Of)初始化的对象的异常?

Module Module1 
    ' MAIN =================================  
    Sub Main() 
    Console.Clear() 
    Console.WriteLine("Creating Bar") 
    Dim myBar As New Bar() 
    Console.ReadLine() 
    End Sub  
End Module 

Class Foo 
    Public Overridable Property Test As String 

    Public Sub New() 
    Me.Test = "hello" 
    End Sub 
End Class 

Class Bar 
    Inherits Foo 
    Private _MyString As New List(Of String) 

    Public Sub New() 
    MyBase.New() 
    End Sub 

    Public Overrides Property Test As String 
    Get 
     Return MyBase.Test 
    End Get 
    Set(value As String) 
     MyBase.Test = value 
     ' NULL REFERENCE EXCEPTION ???????!!!!!!!!!!! 
     Console.WriteLine("{0}, and _MyString.Count = {1}", MyBase.Test, Me._MyString.Count) 
    End Set 
    End Property 
End Class 
+0

http://stackoverflow.com/questions/4602468/can-vb-net-be-forced-to-initialize-instance-variables-before-invoking-the-base-t – SLaks

+0

什么是'objet'你吗?意思是'对象'? – Jodrell

回答

1

Foo.New()Bar()领域初始化之前运行。

As New List(Of String)New部分实际上是Bar.New()构造函数,它后运行的一部分。

+0

如何解决? – serhio

+2

不要在构造函数中调用虚拟成员。 http://msdn.microsoft.com/en-us/library/ms182331.aspx – SLaks