Class 中的 SortedSet 未正确公开

SortedSet in Class does not expose correctly

我有一个奇怪的问题,我似乎无法弄清楚。更奇怪的是,我相当确定它在过去有用,但现在不行了。

我有一个 class,我在其中将变量定义为 SortedSet。在一个函数中,我可以引用变量,但它的 SortedSet 属性没有暴露。如果我仍然使用它们,其中一些可以工作,而另一些则不能。如果我在我的函数中创建该变量,一切都会按预期工作。

这是代码:

Public Class MyTest
    Public MySortedSet = New SortedSet(Of String)()

    Public Sub New()
        Dim MySortedSet2 = New SortedSet(Of String)()


        'Constructor. To use this, add         Dim MyTest As MyTest      to the Form1_load sub.
        Me.MySortedSet.add("Test")
        For Each Item In Me.MySortedSet

            MsgBox(Item)    'This does print Test
        Next Item

        Me.MySortedSet.add  '.add not exposed
        MySortedSet2.add    '.add is exposed

    End Sub

End Class

请参见下面的屏幕截图。第一个例子只有 4 个项目,第二个例子有完整的参数列表。我需要使用第一个示例修复此问题,因此 ElementAt 可以正常工作。它适用于第二个示例,但不适用于第一个示例。它给出了 ElementAt 不是该对象的一部分的错误。

如何获取 me.MySortedSet.????? 的完整参数列表?

您应该将 MySortedSet 声明为 属性:

Public Class MyTest

    Public Property MySortedSet As New SortedSet(Of String)()

    Public Sub New()

        Dim MySortedSet2 As New SortedSet(Of String)()

        Me.MySortedSet.Add("Test")

        For Each item As String In Me.MySortedSet
            Debug.WriteLine(item)
        Next item

        Me.MySortedSet.Add("Test")
        MySortedSet2.Add("Test")

    End Sub

End Class

您还应该在每次声明变量时指明变量类型,即使在 For Each 语句中也是如此。