Also ich versuche zu bestimmen, ob ein Array von identischen Werten innerhalb eines Stapels ist. HierWie ermittelt man, ob sich ein Array in einem Stapel befindet?
Stack<string> stackOfStrings = new Stack<string>();
stackOfStrings.Push("dog");
stackOfStrings.Push("cat");
Debug.WriteLine("stackOfString contains cat: " +
stackOfStrings.Contains("cat"));
Debug.WriteLine("stackOfString contains dog: " +
stackOfStrings.Contains("dog"));
Stack<int[]> stackOfIntArrays = new Stack<int[]>();
stackOfIntArrays.Push(new int[]{0,1});
stackOfIntArrays.Push(new int[]{1,1});
int[] array01 = new int[]{0,1};
int[] anotherArray01 = new int[]{0,1};
int[] array11 = new int[] { 1, 1 };
Debug.WriteLine("SequenceEqual can compare arrays of identical value: " + array01.SequenceEqual(anotherArray01));
Debug.WriteLine("SequenceEqual can be used to compare the top value of a stack: " + stackOfIntArrays.Peek().SequenceEqual(array11));
//I want the line below to evaluate to true
Debug.WriteLine("Contains can be used to determine if an array of values is within the stack: " + stackOfIntArrays.Contains(array01));
ist der Ausgang für Code, wie es ist:
stackOfString contains cat: True
stackOfString contains dog: True
SequenceEqual can compare arrays of identical value: True
SequenceEqual can be used to compare the top value of a stack: True
Contains can be used to determine if an array of values is within the stack: False
Meine Forschung in dieser hat viele Ergebnisse für das Sehen aufgedreht, wenn ein Array in einem anderen Array ist oder eine Teilmenge einer anderen Array, was ich über SequenceEqual erfahren habe. Wenn man sieht, dass das nur in der Lage ist, den obersten Wert im Stapel zu überprüfen, ist es für das, was ich will, nicht geeignet.
Eine alternative Lösung, die ich in Erwägung gezogen habe, wäre, den Stack auf einen neuen Stack zu stapeln und jedes Array zu überprüfen, wenn es umgestellt wird. Wenn man jedoch bedenkt, dass contains einen ganzen Stack nach Werten vom Typ string durchsuchen kann, bleibt mir die Schlussfolgerung, dass es für Werte vom Typ int [] möglich sein sollte. Wenn nicht, wäre eine Anleitung zur bestmöglichen Problemumgehung wünschenswert.
Sie möchten wissen, ob ** irgendein ** Element des Stapels ** Sequenz gleich ** zu einem bestimmten Wert ist. Gibt Ihnen das eine Vorstellung davon, wie Sie es implementieren? –
Wenn Sie möchten, dass Contains() funktioniert, dann müssen Sie einen IEqualityComparer mitbringen, der mehr als den Standardwert liefert, der nur nach Objektidentität sucht. –