c# - 什么时候应该使用out参数?

标签 c# .net out

我不明白什么时候应该使用输出参数,如果我需要返回多个类型,我会亲自将结果包装在一个新类型中,我发现使用它比使用它更容易。

我见过这样的方法,

   public void Do(int arg1, int arg2, out int result)

有没有实际有意义的案例?

TryParse 怎么样,为什么不返回一个ParseResult 类型?或者在较新的框架中返回一个可为空的类型?

最佳答案

当您有一个 TryNNN 函数时,Out 是好的,并且很明显即使函数没有成功,out 参数也将始终被设置。这使您可以依赖这样一个事实,即您声明的局部变量将被设置,而不必稍后在您的代码中针对 null 进行检查。 (下面的注释表明该参数可以设置为 null,因此您可能需要验证您正在调用的函数的文档以确定是否是这种情况。)它使得代码更清晰易读。另一种情况是当您需要在方法条件下返回一些数据和状态时,例如:

public bool DoSomething(int arg1, out string result);

在这种情况下,返回可以指示函数是否成功并且结果存储在 out 参数中。不可否认,这个示例是人为设计的,因为您可以设计一种方法让函数简单地返回一个 string,但您明白了。

缺点是您必须声明一个局部变量才能使用它们:

string result;
if (DoSomething(5, out result))
    UpdateWithResult(result);

代替:

UpdateWithResult(DoSomething(5));

但是,这甚至可能不是缺点,这取决于您要进行的设计。在 DateTime 的情况下,提供了两种方法(Parse 和 TryParse)。

关于c# - 什么时候应该使用out参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1169786/

相关文章:

c# - 使用 out 和 ref 参数时的装箱和拆箱

android - WebView 中的大图像导致内存不足

c# - C# 日期时间和 SQL 日期时间之间的相等性比较失败

c# - 在 Unity 中,改变 x 和 y 旋转也会奇怪地改变 z 值

c# - 为什么在从字典中读取时锁定

.net - 在.Net 3.0中使用MVVM设计模式

c# - out var _ 和 out _ 的区别?

c# - 如何在asp gridview中使用分页模板进行自定义分页?

c# - C#使用丢弃 '_'

c# - 诊断/调试潜在的堆栈损坏.NET应用程序