Pass Instanz der Klasse ohne Verweis

Habe ich diese Frage über einige Instanzen von ref ist oder nicht: hier ist mein problem:

Fall 1: einfache var wie 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++;
}

dies ist genau das, was ich denke, wenn ich den ref, der parameter wird per Referenz übergeben, so dass, wenn geändert wird, wenn ich verlassen der Funktion der Wert geändert wird...

Fall 2: class:

//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);
}

und, wie geschrieben, in den Kommentar, auf den code, ich habe nicht an meinen cTest als Referenz, aber das Ergebnis ist das gleiche, die Meldung zeigt mir 55 und nicht 2..

Wie kann ich das übergeben einer Klasse ohne Verweis?

"Wie kann ich das übergeben einer Klasse ohne Verweis?", das ist wirklich sehr schwer denke ich...
Wenn very hard == impossible Ja. :)
Möchten Sie vielleicht Bearbeiten Sie die Frage in einer kürzeren version. Du bist einfach zu Fragen, über das senden-Klasse Wert. Keine Notwendigkeit, eine Menge code hier. Verbessern Sie die Frage, und könnte Ihnen einige upvotes... 🙂

InformationsquelleAutor ghiboz | 2012-06-27

Schreibe einen Kommentar