2013-07-03 122 views
0

我有在其內部一類具有內部的另一個類命名空間,即從類函數返回對象

namespace MySpace 
    public class MainClass 
     public class SubClass 
      public x as integer 
      public z as integer 
     end class 

     public function Foo() 
      dim y as SubClass 
      y.x = 5 
      return 
     end function 
    end class 
end namespace 

除了線y.x = 5被強調與尖端「變量y被用於已經被分配之前在運行時可能會產生一個空的異常「

基本上我希望能夠讓Foo分配的多個項目可用於任何其他代碼使用MainClass類。什麼是最安全的方式來做到這一點?如果我在C中做這個,我會使用一個結構,但顯然它們在VB中效率較低?

回答

2

你可以做X和Z共享:

Public Class SubClass 
     Public Shared x As Integer 
     Public Shared z As Integer 
    End Class 

或者你可以實例化一個類級變量:

Public Class MainClass 

    Private m_objSubClass As New SubClass2 

,並呼籲像這樣:

Public Function Foo() 
     'Shared 
     SubClass.x = 5 
     'Instantiated Class-Level variable 
     m_objSubClass.x = 5 
    End Function 

如果子類需要被其他類訪問,然後通過一個Property來暴露實例化的版本,而不僅僅是一個私有變量(或者返回函數中的實例化版本)。

Dim objSubClass2 As New SubClass2 
objSubClass2.X = 5 
Return objSubClass2 
+0

謝謝,我將如何讓這個子類的屬性都可以公開:

Return m_objSubClass 

最後,如果你的價值觀並不需要堅持,你可以簡單地在函數實例化一個Subclass2 (在mainClass之外),而成員僅對mainClass可用,但不在其外部? – Toby

+1

在你的主類上有一個返回m_objSubClass的公共屬性。這樣它會是「objInstanceOfMainClass.PropertyNameOfSubClass.X = 5」 – N0Alias