log field应该私有静态的原因是什么?

时间:2010-08-30 23:12:43

标签: c# java actionscript-3

这里是C#:

private static readonly ILog log = LogManager.GetLogger(typeof (MyClass));

不仅在C#中,而且我看到了同样的另一种语言.. 有什么想法吗?

2 个答案:

答案 0 :(得分:12)

它是私有的,因为其他类不应该访问MyClass'日志。

它是static因为它不依赖于类实例。 (以及它可以被static方法使用)

答案 1 :(得分:3)

这样该字段不会被您的子类继承。

举个例子:

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

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

如果调用了SpecializedFoobar的{​​{1}}函数,则共同响应日志将无效:

Whatever()