gpt4 book ai didi

c# - void 与返回 null 的对象

转载 作者:行者123 更新时间:2023-11-30 19:42:36 24 4
gpt4 key购买 nike

由于void签名是用来表示一个方法不返回任何东西,这样的方法,我这样写:

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

然而,在很多地方我看到了不打算返回任何东西的方法,写成下面的方式:

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

return null;
}

在我看来,两个代码片段的作用相同。那么,使用第二个的目的是什么?它们之间有什么区别?他们中的任何一个比另一个更受欢迎吗?

最佳答案

第二个按原样写,单次返回一般没什么用,它会稍微降低性能并使 API 更难使用。但是,它可能会有一些细微的变化,例如:

  • 有多个返回点,这是最后一个表示缺少对象。例如,您可能正常返回一个对象的实例,但由于某种原因这次您没有。 (例一)

  • 如果方法标记不同,例如 public virtual,则默认实现或重写的实现可能不会返回值,但其他实现可能。 (例二)

示例 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com