把它們作爲參數傳遞是非常好的,如果對有問題的子集的調用順序可行的話。如果你真的需要一個在同一個類的不同的子類中可見的變量(ASP.Net中的代碼隱藏頁面),你正在尋找的可能是一個私有成員變量。在訪問修飾符Private之外的任何子或函數之外聲明它,並且該類中的所有子類將能夠訪問它。
Private _foo As String
下劃線是有些人喜歡的,有些討厭的約定。它適用於VB,如果你想定義一個屬性來暴露變量,你不能使用Foo明顯不同於foo,但那是另一回事。
這是不一樣的你會一般由長期全球變量在ASP.Net意義,其中變量將是整個應用程序上下文,它適合於在最意想不到的後果可見的理解。私有成員變量只對擁有它的類可見。
編輯:您的示例代碼是在我的初始答案後添加的。我的VB有點生疏,但正如你寫的一樣,strEmail看起來應該有類級別的知名度,其中包括submitbtn(有人糾正我,如果我錯了)。一種可能性,因爲您提到您在頁面調用readDB Page_Load是,如果您在頁面加載中檢查回發,並且只在初始加載時調用readDB,而不是在回發時調用readDB,這會在單擊按鈕時出現。你可能看過一些例子,包括檢查Postback是否失控並且沒有意識到它的作用(我只是建議你這樣說,因爲你提到你是ASP.Net的新手,如果你是新手的話,它並不直觀 - 沒有意圖犯罪)。
Protected Sub Page_Load (sender as object, e as EventArgs)
If Not IsPostback
// this doesn't get called when the button is clicked so
// strEmail would not be populated when submitbtn is invoked
readDB
End If
End Sub
這是一個無處不在的猜測,所以它可能會離開基地。您是否在Page_Load中設置了斷點,readDB和submitbtn以查看每個中的strEmail的狀態?
你可以張貼一些示例代碼? – 2009-03-03 20:24:15
@zodeus:標記爲vb.net – 2009-03-03 20:25:53