我正在檢查log4net的一些代碼,並且遇到了這個問題。C#私有,靜態和只讀
private static readonly ILog logger = LogManager.GetLogger(typeof(AdminClient));
我想知道爲什麼你需要有私有靜態只讀。
從我的理解私人意味着變量不能在類之外使用,除非有訪問方法或獲取屬性。
靜態意味着該變量僅在該文件中有作用域。
只讀將意味着您只能讀取值並且不能分配它。
所以,我在想這個代碼寫的人。因爲他們不希望它在類之外使用並且是靜態的,所以不希望它在文件外部使用。然而,如果有一個get屬性會靜態阻止這種形式的發生。
我想我可以理解readonly,值只能從中讀取而不能設置。
非常感謝任何建議,
這一特定模式的一個有趣的題外話:我曾經宣稱這是'保護靜態只讀「,併爲我贏得了」[CA2104](https://msdn.microsoft.com/en-us/library/ms182302.aspx):不要聲明只讀可變引用類型「來自VS代碼分析的警告。如「[here](http://stackoverflow.com/a/15745885/268066)所述,」受保護的readonly`字段並不是那麼清楚,作爲`protected`,您可能期望派生類可以初始化該字段。「 將聲明更改爲`private static readonly`固定了這個。 – CrazyPyro 2015-04-13 14:50:32