我不明白何时应该使用输出参数,如果我需要返回多个类型,我个人会将结果包装在新类型中,我发现使用它比使用 out 更容易。
我见过这样的方法,
public void Do(int arg1, int arg2, out int result)
在某些情况下这实际上是有意义的吗?
怎么样TryParse
,为什么不返回一个ParseResult
类型?或者在较新的框架中返回一个可以为空的类型?
当你有一个TryNNN
很明显,即使函数不成功,输出参数也始终会被设置。这允许您依赖于您声明的局部变量将被设置的事实,而不必稍后在代码中针对 null 进行检查。 (下面的注释表明该参数可以设置为null
,因此您可能需要验证您所调用的函数的文档,以确定是否属于这种情况。)它使代码更清晰,更易于阅读。另一种情况是当您需要根据方法的条件返回一些数据和状态时,例如:
public bool DoSomething(int arg1, out string result);
在这种情况下,返回可以指示函数是否成功并且结果存储在输出参数中。诚然,这个例子是人为的,因为你可以设计一种方法,让函数简单地返回一个string
,但你明白了。
缺点是您必须声明局部变量才能使用它们:
string result;
if (DoSomething(5, out result))
UpdateWithResult(result);
代替:
UpdateWithResult(DoSomething(5));
然而,这甚至可能不是一个缺点,这取决于您想要的设计。对于 DateTime,提供了两种方法(Parse 和 TryParse)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)