したがって、同じ値の配列がスタック内にあるかどうかを判断しようとしています。配列が別の配列であるか、別のサブセットである場合は、この中配列がスタックにあるかどうかを調べる方法は?
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
私の研究は見ての結果の多くを上げています:それはあるとしてここ
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));
は、コードの出力であります配列、これは私がSequenceEqualについて学んだ方法です。それがスタックの最高の価値をチェックすることができるように見えるのを見て、それは私が望むものには不十分です。
私が考えた別の解決策は、スタックを新しいスタックに再スタックし、各アレイを移動したときにチェックすることです。しかし、containsが文字列型の値全体に対してスタック全体を見ることができるということを考慮すると、int []型の値に対して可能でなければならないという結論が出てきます。そうでない場合は、最善の回避策のガイダンスをいただければ幸いです。
スタックの**任意の**要素が特定の値に**シーケンス等しい**であるかどうかを知りたいとします。それはあなたにそれを実装する方法のアイデアを与えますか? –
Contains()が機能するようにするには、オブジェクトのアイデンティティのみをチェックするデフォルトのものより多くを実行するIEqualityComparerが必要です。 –