2013-07-19 69 views
2

由於「靜態」變量由類的所有實例共享,因此我想知道它們是否通過網站的所有打開頁面共享?ASP.NET網頁的.aspx.cs文件中的私有靜態變量

例如:比方說,我有以下幾點:

private static string SelectedName = ""; 

protected void SendButton_OnClick(object sender, EventArgs e) 
{ 
    SelectedName = NameTextBox.Text; 
    DisplayLabel.Text = SelectedName; 
} 

// ... other functions that depend on SelectedName's value 

如果兩個人在「鮑勃」在名稱文本框中打開我的網頁..用戶#1類型和點擊發送。用戶#2在其他位置現在打開該頁面。他們會將「Bob」視爲DisplayLabel的文字嗎?

+1

你沒有嘗試過嗎? – Arran

+0

我做了,看起來答案是否定的,但我不想做出任何假設。我也希望得到某種解釋,因爲它違背了我所教導的靜態變量在所有實例中共享的內容。 –

+1

@cskoala有些事情會使問題變得複雜,例如您是否有多個Web前端,當然在雲環境中您幾乎肯定會這樣做。在雲環境中,你可能根本不應該使用靜態變量。如果您需要在用戶之間共享狀態,那麼ASP(或您的提供者)專門爲此提供了構造。 – Servy

回答

1

靜態變量具有應用範圍。這意味着用戶可以通過靜態分享數據,但只能在單個服務器上的單個工作進程中共享數據。

+0

由於應用程序由雲託管,因此應用程序在單個服務器上不會有單個工作進程,因此該語句不成立,並且*不具有應用程序範圍。 – Servy

+0

這就是我說的對嗎? 「但只能在單個服務器上的單個工作進程中」 –

+1

是的,您確實這樣說過,但由於事實並非如此,前面的陳述並不適用,所以沒有任何答案。答案不是*錯誤*,它不是*有用*,因爲信息不適用於OP的情況。 – Servy