正如标题中的内容还没有点击给我,因为我还在学习c#,以下是一些非常基本的代码,我只是用它来掌握它。
[TestMethod]
public void Pass()
{
int x = 4;
Increment(x);
Assert.AreEqual(5, x);
}
void Increment(int num)
{
num++;
}
我知道如果我添加ref就可以了,但是我已经看到使用它并不总是最好的情况。 我能做什么而不是使用ref为什么?
答案 0 :(得分:4)
int
值作为返回值。一般来说,应该避免状态突变。class IntHolder { int MyInt; }
或StrongBox<int>
。如果您告诉我们更多情况,我们可以推荐一个特定的解决方案。
答案 1 :(得分:1)
[TestMethod] public void Pass() {
int x = 4;
x = Increment(x);
Assert.AreEqual(5, x);
}
int Increment(int num) {return ++num; }
如果你的设置不使用传递参考
,这应该有效基本上,当没有通过ref传递时,你给被调用的方法一个原始对象的副本。因此,您在Increment中对它的更改不会反映在原始文件中(除非您在此处返回方法中的新值并在分配中使用它)。
当通过ref传递时,为被调用的方法提供对原始对象的引用。在这种情况下,任何修正案都是在原件上进行的。
希望有所帮助。