2013-05-03 2 views
2

С этим:Доступ скрытые общие/статические переменные

class outer 
    public shared X as string = "" 
    class inner 
     public shared sub test() 
     Dim s as string 
     s = X ' refers to the shared (static) variable in outer 
     end sub 
    end class 
    end class 

ссылка на X в методе испытаний состоит в общей переменной, объявленной во внешнем классе, однако, если мой внутренний класс объявляет переменную с таким именем (затмение общей переменной из внешнего класса), как мне получить доступ к ней?

class outer 
    public shared X as string = "" 
    class inner 
     public X as string = "x" 
     public shared sub test() 
     Dim s as string 
     s = X ' this fails because it's an attempt to access an instance variable 
     end sub 
    end class 
    end class 
+0

Внутренний класс не имеет особого отношения к внешней, другой, чем иметь доступ к закрытым частям. Это потребует ссылки на внешний объект. –

ответ

1

Попробуйте указать имя внешнего класса, как и это:

Class outer 
    Public Shared X As String = "bar" 

    Class inner 
     Public X As String = "foo" 
     Public Shared Sub test() 
      Dim s As String = X    ' foo 
      Dim t As String = outer.X  ' bar 
     End Sub 
    End Class 
End Class 
+0

Я пробовал это, но не могу получить синтаксис правильно. компилятор жалуется: «ОШИБКА:« внешний »не объявлен. Он может быть недоступен из-за его уровня защиты», но я не понимаю почему ... – ekkis

+0

@ekkis Я просто попробовал и смог заставить его работать без любой вопрос. Возможно, «внешний» должен быть общедоступным. –

Смежные вопросы