2010-08-30 71 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

相关问题