Передать экземпляр класса без ссылки

У меня есть вопрос о передаче некоторых экземпляров по ссылке или нет: вот моя проблема:

Случай 1: простая переменная типа 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..

Как я могу передать класс без ссылки?

5
задан gdoron is supporting Monica 27 June 2012 в 07:19
поделиться