由于void签名用于表示某个方法不返回任何内容(例如此类方法),因此我通过以下方式编写它:

private void MyMethod()
{
    // Body of the method.
}


但是,在许多地方,我看到了一些不打算返回任何内容的方法,它们的编写方式如下:

private object MyMethod()
{
    // Body of the method

    return null;
}


从我的角度来看,两个代码段都执行相同的操作。那么,使用第二个目的可能是什么?它们之间有什么区别?并且其中任何一个都比另一个更受青睐吗?

最佳答案

按原样编写的第二个代码,单返回通常是无用的,它会稍微降低性能,并使API难以使用。但是,可能会有一些细微的变化,例如:


有多个返回点,这是最后一个指示缺少对象的点。例如,您可能正常返回一个对象的实例,但是由于某种原因,这次您没有一个实例。 (示例1)
如果方法的标记不同,请说public virtual,则默认实现或被覆盖的实现可能不会返回值,但其他实现可能会返回值。 (示例2)


范例1:

public object MyMethod()
{
   if(myObj != null)
      return myObj.Result();

   return null;
}


范例2:

// Derived Class
protected override object MyMethod()
{
    // We don't need a result from here so we don't have an implementation of
    // anything, but the base implementation doesn't make sense. This however
    // could be breaking SOLID principles.
    return null;
}

// Base Class
protected virtual object MyMethod()
{
    return new MyObj();
}

关于c# - void与对象返回null,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17164001/

10-12 12:49
查看更多