2011-07-26 41 views
0

我有一個類,MyClass,聲明爲public,用Shared方法test()共享類領域的Visual Basic

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

我猜測,在模糊這個代碼的發佈目的,你已經掩蓋了這樣一個事實,即你有一個名稱爲MyClass的變量也在你的頁面加載中聲明(*是*這個錯誤基本上是在說什麼)。 –

+1

我意識到這個例子可能是一個抽象概念,但是如果您將類名更改爲「AClass'而不是'MyClass',是否仍會發生? 'MyClass'是VB.Net中的關鍵字,這可能會導致您的問題。 –

+0

@Damien_The_Unbeliever,是的,這正是發生了什麼......我有一個MyClass類型的變量,稱爲myClass,而VB顯然是根據變量名稱處理myCLass == MyClass。有趣的,謝謝你的幫助。你可以發佈這個作爲解決方案,所以我可以標記它的答案? –

回答

2

我猜測,在混淆這個代碼的發佈目的,你已經掩蓋了事實,你有一個變量名稱MyClass也聲明在你的頁面加載(這就是錯誤基本上是說)。

Visual Basic是不區分大小寫的語言。將變量聲明爲myClass與將其聲明爲MYCLASSmyclass相同,並且行MyClass.test()將將名稱MyClass解析爲該變量 - 錯誤指示該變量尚未聲明。