Warum ist die Liste übergeben wird, ohne ref, um eine Funktion handeln, wie übergeben mit ref?

Wenn ich nicht diese schrecklich falsch, dieses Verhalten ist merkwürdig für mich. Anstatt zu erklären, poste ich ein Beispiel-code unten, und sagen Sie mir bitte warum bekomme ich Ausgang x und nicht y.

    private void button1_Click(object sender, EventArgs e)
    {
        List<int> l = new List<int>() { 1, 2, 3 };
        Fuss(l);
        MessageBox.Show(l.Count.ToString());
    }

    private void Fuss(List<int> l)
    {
        l.Add(4);
        l.Add(5);
    }

Ausgabe sollte, angenommen ich würde 3 sein. Aber ich bekomme als Ausgabe 5. Ich verstehe die Ausgabe kann 5 sein, wenn ich dies tun:

    private void button1_Click(object sender, EventArgs e)
    {
        List<int> l = new List<int>() { 1, 2, 3 };
        Fuss(ref l);
        MessageBox.Show(l.Count.ToString());
    }

    private void Fuss(ref List<int> l)
    {
        l.Add(4);
        l.Add(5);
    }
Sie sollten wahrscheinlich Lesen Sie auch Jon Skeet Parameterübergabe in C#.

InformationsquelleAutor nawfal | 2011-09-06

Schreibe einen Kommentar