2011-06-07 78 views
0

我在class1中创建了一个只读属性(名称)。我如何在class2中使用这个名称属性?如何在多个类中使用只读属性

Public Class Class1 
ReadOnly Property name() As String 
    Get 

     Return System.IO.path.GetFileName("C:\Demo\Sample1") 

    End Get 
End Property 

我可以直接将这个名称变量值带入class2吗?需要建议。

回答

0

通过Class1的

Public Class Class2 

     Sub New() 
      Dim o As New Class1 
      Dim s As String = o.Name 

     End Sub 

    End Class 

Here的一个实例是值得的班念。

+0

向下选民......他问:“我怎么能在Class2中使用这个名称属性?? – 2011-06-07 15:19:37

+0

我不当你重新进入class2时,你会觉得你的工作很好,你需要'新的Class1' – JonH 2011-06-07 15:20:32

+0

废话!类型... tks – 2011-06-07 15:21:35

1

您的Readonly属性仍然是一个实例成员,如果没有实例化Class1并查看属性定义,它可以是Shared。你可以让你的财产Shared和Class2中使用它

Public Class Class1 
Shared Property name() As String 
    Get 

     Return System.IO.path.GetFileName("C:\Demo\Sample1") 

    End Get 
End Property 

和Class2中,你可以叫

Dim class1Name = Class1.name 
+0

+1不确定为什么你删除了你的原始文章,并且它的速度更快,并且正确。 – JonH 2011-06-07 15:38:26

+0

@JonH似乎并不像OP有兴趣拥有共享成员,但在看到下面的讨论后,我想我会把它留在那里作为参考。 – 2011-06-07 15:40:16

3

,你必须Class1类型的对象的引用,你到处都可以访问此属性。所以如果你的Class2对象有引用,他们可以使用它。

例如:

Class Class2 
    Property cls1 As New Class1 

    Function getClass1Name() As String 
     Return cls1.Name 
    End Function 
End Class 

另一种选择是使财产共享的,因为它是独立于有意义的Class1任何实例的值。

然后你就可以通过类名无Class1实例访问:

Class Class1 
    Public Shared ReadOnly Property Name As String 
     Get 
      Return System.IO.Path.GetFileName("C:\Demo\Sample1") 
     End Get 
    End Property 
End Class 

Class Class2 
    Function getClass1Name() As String 
     Return Class1.Name 
    End Function 
End Class 
+0

你必须承认B ala R在你做之前发布了这个方式,关于共享财产,并且你对它进行了编辑并添加了它,你应该提到他和他+1。 – JonH 2011-06-07 15:23:54

+0

@JonH:我会的,但是首先我没有看到他的速度更快,现在看来他已经删除了他的答案。 – 2011-06-07 15:25:48