Ich habe ein kleines Problem, wenn ich einige Operationen in C# machen möchte. Ich werde dir ein kleines Beispiel geben.Stapel der generischen Liste wird gelöscht, wenn die gedrückte Liste gelöscht wird
In diesem Code möchte ich meine verknüpfte Liste auf einen Stapel schieben, als alle Elemente in der Liste entfernen. Wenn ich die Liste lösche, verschwindet der erste Index meines Stacks, weil er als Referenz übergeben wurde. Liege ich falsch? Weil ich nicht weiß, warum es passiert.
So verwende ich die Weitergabe nach Wert Methode.
Stack<List<HufmannLetter>> steps = new Stack<List<HufmannLetter>>();
List<HufmannLetter> letterList = new List<HufmannLetter>();
while(true) {
letterList.Add("asd");
letterList.Add("sad");
List<HufmannLetter> tempLetterList = new List<HufmannLetter>(letterList);
steps.Push(tempLetterList);
letterlist.Clear();
}
Ist es ein guter Weg, um ein Problem zu lösen? So funktioniert es, aber die Lesbarkeit nimmt ab. Was schlägst du mir vor?
Dank ...
"Bin ich falsch?" Ja, es gibt keinen Pass-by-Reference in dem Code, den Sie gezeigt haben. Man kann das an dem Fehlen von "ref" und "out" erkennen. Ich schlage vor, dass Sie http://jonskeet.uk/csharp/parameters.html und http://jonskeet.uk/csharp/references.html lesen. Beachten Sie, dass das Übergeben eines Verweises nach Wert nicht dasselbe ist wie beim Pass-by-Reference. –