Die übergabe von arrays als parameter

Wenn wir ändern den Inhalt des Arrays als parameter übergeben innerhalb einer Methode die änderung erfolgt auf der Kopie des Arguments statt der original-argument daher ist das Ergebnis nicht sichtbar.

Was ist der Prozess, der passiert, wenn wir die call-Methode, die den Typ der Referenz argument?

Hier ist das code-Beispiel, was ich Fragen will

      using System;

namespace Value_Refrence_Type
{
    class Program
    {
        public static void Main()
        {
            int[] callingarray = { 22, 200, 25485 };
            abc(callingarray);
            Console.WriteLine("This is callingarray");
            foreach (int element in callingarray)
                Console.WriteLine(element);
        }



        //method parameter
        static void abc(int[] calledarray)
        {
            Console.WriteLine("Method Called--------");
            foreach (int element in calledarray)
                Console.WriteLine(element);

            //Here on changing the value of elements of calledarray does't afftect the value of element of callingarray
            //if both refrences to same memory location then the value needs to change, which is not happening here
            calledarray = new int[] {55, 54, 65};
            foreach (int element in calledarray)
                Console.WriteLine(element);
        }

    }
}
arrays oder anderen Objekten, sind nicht durch Verweis übergeben. Alle Objekte in C# - Wert übergeben werden standardmäßig. Übergeben durch Referenz, die Sie verwenden müssen, um die ref oder out Schlüsselwort. Sie scheinen verwirrend Referenz-Typen mit argument übergeben.
nochmal, du verwechselst das Verhalten eines Referenz-Typ als Wert übergeben mit der übergabe eines Arguments als Referenz. Bei der übergabe per Referenz, die Sie zuweisen können, ein neues array, in das argument und es wird ändern Sie die variable an die callsite das ist eindeutig nicht der Fall in den code, die wir diskutieren. Wieder, es ist sehr einfach zu passieren, ein argument per Referenz müssen Sie verwenden Sie die bereitgestellten Schlüsselwörter ref oder out, sonst wird es durch Wert übergeben werden. Ich schlage vor, Sie Lesen die entsprechenden Bereiche der C# - Spezifikationen bleiben Sie nicht überzeugt.
komisch, dass Sie auf meine eigene Antwort. Ich sehe, Sie sind nicht überzeugt, also werde ich nennen Sie MSDN hier: "(...) übergeben Sie einen parameter per Referenz, verwenden Sie die ref-oder out-Schlüsselwort. (...)".
Nein, ich sehe ein - parameter werden als Wert übergeben was bedeutet, dass die variable kopiert wird. Da die variable hat einen Typ der Referenz, die Referenz kopiert wird und es auf das gleiche Objekt zeigen. Aber das ist nicht die übergabe eines Parameters durch einen Verweis. Die übergabe eines Arguments als Referenz bringt mit der ref Schlüsselwort und ermöglicht es Ihnen, änderung an der callsite der Wert der ursprünglichen Variablen, das heißt, dass ich sagen könnte, dass a = null und zurück an die callsite die variable wäre null bei der Methode zurückgegeben. Versuchen Sie, dass in Ihrem Beispiel und sehen, wie es funktioniert. Wieder, Lesen Sie einfach den link in meiner vorherigen Antwort.
Das ist nicht zu problematisch in Gesprächen unter Menschen, die tatsächlich verstehen, was passiert hinter den kulissen, aber für diejenigen, die nicht verstehen, was eigentlich vor sich geht, wie nicomp, es entsteht ein extrem Falsches mentales Modell von dem, was Los ist, das die Ergebnisse in das Programm nicht verhält, wie Sie erwarten, dass es, weil Sie denken, dass Sie vorbei sind Werte von Referenz, wenn Sie es nicht sind. Wenn die übergabe einer Referenz durch Wert und einen Wert per Referenz hat eigentlich die gleiche Semantik, dann Differenzierung zwischen Ihnen würde nicht wichtig sein, aber Sie nicht das gleiche Verhalten haben.

InformationsquelleAutor mdadil2019 | 2016-05-28

Schreibe einen Kommentar