【发布时间】:2019-02-18 00:37:58
【问题描述】:
问题
为什么“out”参数作为语言结构存在于 C# 中?
详细说明问题
为什么它首先存在?难道没有更好的语言特性来获得与“out”参数相同的效果吗?
让值类型表现得像引用类型不是很奇怪吗?
难道没有更好的方法从一个方法返回多个值吗?
这是一个历史事件吗,这意味着在 C# 的第一个版本中,无法实现使用 out 参数可以实现的功能,但现在有更新的功能并且它只是保留在语言中以实现向后兼容性?
我没有问什么
- 我不是在问它的作用
- 我不是在问它是如何使用的
- 我不是在问“ref”和“out”之间的区别是什么
- 我读到应该避免使用它并选择其他构造
我在阅读类似问题时没有发现任何重复。
预期答案格式
我很想听听类似“看,这是一个您只能使用“out”参数语言结构才能解决的问题,这是一个代码示例......”。
或者,“看,这曾经是解决以下问题的唯一方法...代码示例...,但由于 C# 版本...更好的解决方法是这样...代码示例。 ..”。
请不要发表意见。
【问题讨论】:
-
根据定义,这个问题是基于意见的,这就是它被关闭的原因。
-
@DavidG:我不明白。这种意见的依据是什么?难道不能说,“看,这个问题只能通过使用'out'参数来解决,这是一个代码示例”?就像 KristoferA 在他的 answer? 中所做的那样?
-
很明显,使用
ref可以获得相同的结果,只是不能保证参数会在方法内部初始化。这可能是 C# 设计团队的意见,添加这种支持会很好。但是,如果没有真正让 C# 语言团队的任何人回答这个问题,或者在其他地方链接到这样的答案,这里的所有答案都只是某人的意见。 -
我不同意那些认为这是基于意见的人。我懒得花一个小时在谷歌上搜索它,但我打赌在这方面有来自 Hejlsberg 或 Lippert 的引述。
-
词源学问题通常不适合 Stack Overflow,因为您确实在寻找某事的根本原因,而 我们 知道的根本原因就像 @利亚姆说,它在那里,因为规范说它在那里。你问为什么有人首先将它添加到规范中,这将需要这些人,正如 Jeroen 在上面发布的那样,让其中一个人发布明确答案的机会甚至不是不可能的。我们都可以提出它存在的充分理由,或者应该删除它的充分理由,但那些是意见。