c#可以在覆盖对象中为null吗?

时间:2012-12-18 11:41:30

标签: c# logging null

希望有人可以帮忙解决这个问题,这让我发疯了。

我有一个继承自父对象的类,它会覆盖该对象的某些方法。其中一个覆盖中的相关代码看起来像这样(我删除了正常运行的代码):

    public override void Initialise()
    {
        if (Url != null)
        {
            _logger.LogInfo("Initialising for file " + Url);

            // call the base Initialise method
            try
            {
                base.Initialise();
            }
            catch (Exception ex)
            {
                _logger.LogError("Error on initialise : ", ex);
            }
      }
 }

logger对象写入我们的应用程序日志数据库。

当它第一次到达代码中的这一点时,它会在initalise上记录错误,并且给我一个未设置为对象错误实例的对象引用。但没有进一步的信息,没有内部异常,也没有行号。

我想知道基数是否有可能为空?这看起来很奇怪而且不太可能,但我无法解释为什么没有进一步的信息以及为什么代码抵制了我从中获取更多信息的所有尝试。

它在一个实时服务器上,所以我无法单步执行它,我无法在测试服务器上复制错误。如果有人对我如何能够更详细地了解其出错的地点和方式有任何想法,我们将深表感谢。

干杯, 马特

1 个答案:

答案 0 :(得分:4)

回答你的问题是否定的。 Base不能为null,因为它在子类之前被实例化(如果不调用特定的基类型构造函数,则在子类构造函数执行之前调用默认值)。您的错误来自base.Initialize()方法。