該問題特別關注.Net。在其派生類中共享的基類中的靜態成員
假設基類A有2個派生類B和C.此外,假設基類A有一個名爲's'的靜態變量。這個靜態變量值是在'B'和'C'之間共享的,還是每個都獲得它自己的靜態變量副本。
我目前的知識說通常靜態變量是在派生類之間共享的,除非基類是Generic。如果基類是通用的,那麼將爲類型參數的每個唯一組合創建該類的唯一副本,並且該類的每個副本以及該特定副本的派生類都與基類共享同一個satatic變量。
我實際上面臨着一個非常獨特的情況。就我而言,A,B和C都是非通用的。而且A有一個靜態成員。但是這個成員的值對於B和C是不同的,在我的理解中應該不是這樣的(除非我上面的靜態變量聲明不正確)。
編輯:
那麼我的應用程序是一個ASP.NET應用程序。我正在繼續調試,但根據我目前的評估,它發生的是這樣的:
- 我把一個斷點放在第一次命中斷點時變量和它的值被更新。
- 下一次命中斷點時,變量已恢復爲其舊值並再次初始化。這是一個私有變量,只在一個地方更改。
我的猜測可能是應用程序的應用程序域已經回收或以某種方式,否則該類從內存中卸載。我仍在調查,但謝謝大家的回覆。
如果您可以構建一個簡短但完整的代碼示例,那麼我們可以計算出正在發生的事情,或者嘗試這樣做,您可能會發現問題的原因。 – 2011-04-18 10:20:23
我唯一的猜測是如果靜態是用ThreadStaticAttribute裝飾的,而且你正在從不同的線程觀察它。 – 2011-04-18 10:22:44
您對泛型類的評論意味着混淆。具體的泛型類不是從假定的開放泛型「基類」中「派生出來的」。 – AakashM 2011-04-18 10:37:25