问题
I have a class, MyClass, declared as public, with a Shared method test():
Public Class MyClass
Public Shared Function test()
Return "sdfg"
End Function
' snip other non-shared methods
End Class
This Class is located in the App_Code directory of the website, and appears to be visible, as I can instantiate an instance of the Class from any of the sites scripts.
My issue relates specifically to accessing the Shared method test(). Trying to get this working, I have the following code in Page_Load() of one of the scripts:
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
If I comment out Response.Write MyClass.test(), everything works fine and I can use the Class - however, trying to access the Shared method, I get the following error:
Local variable 'myClass' cannot be referred to before it is declared
Any pointers as to what I am doing wrong?
回答1:
I'm guessing that in obfuscating this code for posting purposes, you've masked the fact that you have a variable with the name MyClass also declared in your page load (that is what the error is basically saying).
Visual Basic is a case insensitive language. Declaring your variable as myClass is the same as declaring it as MYCLASS or myclass, and the line MyClass.test() will be resolving the name MyClass to that variable - which as the error indicates, hasn't been declared yet.
来源:https://stackoverflow.com/questions/6830825/shared-class-field-in-visual-basic