是否有充分的理由将ref字符串或ref类传递给函数?

Mic*_*cah 2 .net c#

一位同事和我今天正在辩论是否有用这样的功能:

private void MyFunction(ref MyClass variable)
    {

    }
Run Code Online (Sandbox Code Playgroud)

我能看到的唯一优势是它允许你将变量的原始指针设置为null ...除此之外,如果你省略了ref,没有区​​别,对吗?

你能想到将ref字符串传递给函数的任何理由吗?

Jon*_*eet 5

我个人更喜欢返回Tuple具有多个值的a,但基本点是给调用者多个结果.对于ref参数,额外结果可能会替换现有变量中的值.请注意,这与仅处理参数本身非常不同.例如:

public void Foo(ref StringBuilder builder)
{
    builder = new StringBuilder("hello");
}
Run Code Online (Sandbox Code Playgroud)

完全不同于:

public void Foo(StringBuilder builder)
{
    builder.Clear();
    build.Append("hello");
}
Run Code Online (Sandbox Code Playgroud)

参数类型是引用类型还是值类型在某种程度上是无关紧要的 - 特别是在考虑不可变类型时,例如string,与上面的方法不相同的情况.