c# - 在方法中使用 'out' 或 'ref' 参数的正当理由是什么?

标签 c#

我鄙视 out 和 ref 作为方法的参数。恕我直言,它们使代码变得不那么干净,并为产生副作用提供了机会。但我承认我可能不明白它们的用处,这可能解释了我厌恶的部分原因。拜托,有人可以解释 out 或 ref 的有效案例吗?

最佳答案

基本上,如果您需要返回多个值,可以使用类似 Tuple<,> 的替代方法或用于封装值的自定义类型。典型的例子可能是 int.TryParse及相关方法。他们想传回两条信息:

  • 解析值
  • 是否解析成功。

现在这些可以实际上是使用返回类型 int? 编写的在这种情况下等等,但对于其他情况也是一样的原则。 (例如 Dictionary<,>.TryGetValue ,其中存储在字典中的值可以合法地为 null。)

我不会说我鄙视 outref参数,但我确实相信它们只应该偶尔使用,并且只有在没有更好的选择时才使用。 ref的大部分用途我在 Stack Overflow 上看到是由于对参数传递的误解。

关于c# - 在方法中使用 'out' 或 'ref' 参数的正当理由是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7780209/

相关文章:

c# - 这个功能存在吗?在 C# 中定义我自己的大括号

c# - 使用 DLLImport 将数据发送到非托管代码

c# - 在单元测试中适当使用 Tuple<>?

c# - 通过monotouch播放.m3u8音频流文件

C# Serilog 仅在错误后收到电子邮件

c# - 在 C# 中使用 TaskDialogIndirect

c# - 折叠所有内容时隐藏扩展器

c# - DataContract 类中的 WCF 私有(private)成员引用变为 NULL

c# - 我需要一个解决方案来消除类中的公共(public)字符串

c# - 试图让 ef 核心迁移在迁移到 .net 核心 2 的项目上工作