我有这个关于是否通过 ref 传递一些实例的问题:这是我的问题:
案例1:简单的var int
:
private void button2_Click(object sender, EventArgs e)
{
int nTest = 10;
testInt(nTest);
MessageBox.Show(nTest.ToString());
// this message show me 10
testIntRef(ref nTest);
MessageBox.Show(nTest.ToString());
// this message show me 11
}
private void testInt(int nn)
{
nn++;
}
private void testIntRef(ref int nn)
{
nn++;
}
这正是我的想法,如果我使用ref,参数是通过引用传递的,所以如果改变了,当我退出函数时,值就会改变......
案例2:类:
// simple class to understand the reference..
public class cTest
{
int nTest;
public cTest()
{
setTest(0);
}
public void setTest(int n)
{
nTest = n;
}
public int getTest()
{
return nTest;
}
}
// my main code
private void button3_Click(object sender, EventArgs e)
{
cTest tt = new cTest();
tt.setTest(2);
testClass(tt);
// I expect that the message shows me 2, 'cause testClass
// doesn't have (ref cTest test)
MessageBox.Show(tt.getTest().ToString());
}
private void testClass(cTest test)
{
test.setTest(55);
}
并且,正如代码评论中所写,我没有通过我的 cTest 作为参考,但结果是一样的,消息显示我 55 而不是 2..
如何在没有参考的情况下通过课程?