显然,他们"令人困惑".那是认真的原因吗?你能想到其他人吗?
您是否看到有多少开发人员不了解ref/out?
我在他们真正需要的地方使用它们,但不是这样.它们通常只有在您想要有效地返回两个或更多值时才有用 - 在这种情况下,至少值得考虑是否有一种方法可以使该方法只做一件事.有时使用ref/out 是最合适的方法 - 各种TryParse方法等.
在我看来,它们被认为是代码气味,因为通常有一个更好的选择:返回一个对象.
如果您注意到,在.NET库中它们仅用于某些特殊情况,即类似于tryparse的场景,其中:
返回一个类意味着装箱值类型
该方法的合同要求它快,因此装箱/拆箱不是一个可行的选择.