2010-08-30 68 views

回答

12

它是私密的,因爲其他類不應該訪問MyClass'日誌。因爲它不依賴於類實例,所以它是static。 (並且可以通過static方法使用)

+0

啊..不錯..感謝.. – ktutnik 2010-08-31 02:39:19

+0

如果該字段不是靜態的,會有任何性能損失嗎?或者它是使它合理正確的問題? – 2010-08-31 02:40:46

+0

@jpartogi:如果'GetLogger'是一個昂貴的調用,或者每個ILog'實例都使用大量內存,那麼肯定會。否則,不多。 – SLaks 2010-08-31 02:49:21

3

這樣該字段不會被您的子類繼承。

拿這個例子:

class BaseFoobar 
{ 
    public static readonly ILog log = LogManager.GetLogger(typeof(BaseFoobar)); 
} 

class SpecializedFoobar : BaseFoobar 
{ 
    public void Whatever() 
    { 
     log.Error("I exploded"); 
    } 
} 

如果SpecializedFoobarWhatever()功能被稱爲有史以來共同應對日誌將是無效的:

[MyApp.BaseFoobar]: ERROR: I exploded

+0

感謝關於繼承問題的完整解釋,但對不起,我應該選擇Slaks答案,因爲他也描述了靜態。 – ktutnik 2010-08-31 02:42:11

相關問題