如果我創建一個靜態屬性MyLanguage
和一個請求並將其值設爲1
,而在同一時間的另一個線程將它設置爲2
- 會是怎樣的MyLanguage
終值?靜態屬性要求
單個MyLanguge
屬性是否在ASP.NET會話中共享?
如果我創建一個靜態屬性MyLanguage
和一個請求並將其值設爲1
,而在同一時間的另一個線程將它設置爲2
- 會是怎樣的MyLanguage
終值?靜態屬性要求
單個MyLanguge
屬性是否在ASP.NET會話中共享?
靜態屬性/字段在整個應用程序域中共享。所以你所有的會話都應該看到相同的值。
唯一的例外是當您在靜態字段上使用ThreadStatic屬性時,在這種情況下每個線程都會看到自己的值。例如
[ThreadStatic]
static int counter = 0; // each thread sees a different static counter.
Erosnmez所以它意味着每個會話都會有自己的靜態值 –
否,除非你指定了[ThreadStatic],否則他們應該看到一個_shared_值,而不是他們自己的值。 –
是的,我只是在說, –
這將是2.靜態字段,屬性在對象之間共享。所以最新的設置值將是所有實例的更新。
從MSDN
使用static修飾符來聲明靜態成員,屬於類型本身,而不是一個特定的對象。靜態修飾符可以與類,字段,方法,屬性,運算符,事件和構造函數一起使用,但不能與索引器,析構函數或類以外的類型一起使用。欲瞭解更多信息
我不喜歡「在對象之間共享」的術語 - 這表明它們與對象本身*相關*,它們不是。它們與類型有關。該字段是否存在*任何*實例。 –
這只是術語。實際上,它是由所有對象共享的。 –
@Rajesh Subramanian你可能想要改變你的答案,你說靜態是在對象間共享的 - 這是誤導性的,這與'Environment.MachineName'在對象間共享 - 它們完全不相關。靜態屬於類型,而不屬於單個對象。 – andreister
靜態是唯一的應用程序域,該應用程序域的所有用戶將爲每個靜態屬性共享相同的值。
當您看到單詞static時,請考慮「將只有一個此實例。」實例持續多久是一個單獨的問題,但簡短的答案是它是可變的。
如果要存儲特定於用戶的值,請查看Session State。
不只是一個簡單的asp.net網頁 –
你可以請一些努力使你的問題更清晰嗎?這是一個語法噩夢。 :(我還沒有喝過早茶,所以也許只是我,但這個問題真的可以用一些工作。 – Shaamaan
不,如果你把你的價值1或2存入會話中,那麼它對每個用戶都是唯一的..會議無法分享其獨特 –