這絕對是一個小菜鳥問題,但我的搜索如此遠遠沒有解決我的問題。c#:(靜態)班級變量
想要一個特定的控制檯應用程序來存儲幾個類級變量。在一種情況下,我想存儲我的日誌記錄對象的副本,我將在課程中的各個地方使用它。在另一種情況下,我想存儲一個簡單的類型,實際上是一個只能在內部使用的int值(不需要是屬性)。
看來,除非我將這些變量指定爲靜態,否則我不能在Main()中使用它們。
我對靜態對象的理解是,它們的值在對象的所有實例中共享。在正常的操作下,我希望他們只是我的應用程序的一個實例,所以這個問題不是問題 - 但它突出了我對相當基本的東西缺乏瞭解。
在我的日誌記錄對象的情況下,我可以看到使它靜態的情況 - 跨多個實例共享日誌可能會帶來好處。然而,情況可能並非如此......就我的int而言,我絕對不希望這種情況在實例間共享。
所以......
- 我誤解這背後的原理是什麼?
- 是否有不同的方式我應該聲明和使用我的類級變量?
- 我應該避免使用它們嗎?我可以簡單地將值作爲參數從函數傳遞給函數,但對於沒有明顯收益的工作來說似乎很少。
編輯:好的,消息很清楚 - 我對靜力學的理解基本上是正確的,但問題是結構和方法之一。感謝您的回覆。
不完全和答案,但檢查了這一點:http://en.wikipedia.org/wiki/Singleton_pattern – Brad 2010-10-01 13:21:47
你的主()方法是靜態的,這就是爲什麼你只能從中訪問靜態方法和變量。 – 2010-10-01 13:25:03
靜態變量在AppDomain *內的對象的所有實例*之間共享。您的應用程序的每個實例都位於不同的AppDomain中。 – Douglas 2010-10-01 13:30:36