Поле общего класса в Visual Basic - PullRequest
0 голосов
/ 26 июля 2011

У меня есть класс MyClass, объявленный как открытый, с методом Shared test():

Public Class MyClass
  Public Shared Function test()
    Return "sdfg"
  End Function

  ' snip other non-shared methods
End Class

Этот Class находится в каталоге App_Code веб-сайтаи кажется видимым, поскольку я могу создать экземпляр класса из любого из сценариев сайтов.

Моя проблема касается, в частности, доступа к методу Shared test().Пытаясь заставить это работать, у меня есть следующий код в Page_Load() одного из сценариев:

Sub Page_Load(ByVal Sender as Object, ByVal E as EventArgs)
  Response.Write MyClass.test()

  Dim myClassVar As MyClass = new MyClass()
  myClassVar.nonSharedMethod()
End Sub

Если я закомментирую Response.Write MyClass.test(), все работает нормально, и я могу использовать Class -однако, пытаясь получить доступ к методу Shared, я получаю следующую ошибку:

Local variable 'myClass' cannot be referred to before it is declared

Есть ли какие-либо указания относительно того, что я делаю неправильно?

1 Ответ

2 голосов
/ 26 июля 2011

Я предполагаю, что, запутывая этот код для публикации, вы скрывали тот факт, что у вас есть переменная с именем MyClass, также объявленным в загрузке вашей страницы (именно об этом в основном говорит ошибка).

Visual Basic - это язык без учета регистра.Объявление вашей переменной как myClass аналогично объявлению ее как MYCLASS или myclass, и строка MyClass.test() будет преобразовывать имя MyClass в эту переменную - что, как указывает ошибка, не былообъявлено пока.

...