C#でStackに値を挿入しました。私はmystack [0]、mystack [1]の値が必要です。どうやってするの。私はスタックでメソッドを試してみましたが、私はそれを試してみましょうコードのヒントを教えてくださいC#を使用してスタック内の現在のインデックスを取得する方法
答えて
インデックスでアイテムが必要な場合は、おそらくList<T>
より適切なデータ構造ですか?
スタックは、最後に挿入したアイテムのみを取得できるようにしています。そこその動作を回避する方法がありますが、あなたはインデックスでのアイテムが必要な場合は、確かにこれはうまく機能:
var myList = new List<Int32>();
myList.Add(100);
myList.Add(200);
myList.Add(300);
myList.Add(400);
Console.Out.WriteLine(myList[2]); // Prints "300"
stack.getindex [0]またはその他の – user1220052
という名前のメトはビルトインスタックにありません。これを行うには、配列またはリストに変換する必要があります。 'myStack.toArray()'やLINQ 'ToList()'拡張メソッドを実装する組み込みのメソッドがあります。 –
kk mystack.to Array() – user1220052
あなたはこのためにElementAt()
を使用することができます。
Stack<Int32> foo = new Stack<Int32>();
foo.Push(5); //element 1
foo.Push(1); //element 0
int val = foo.ElementAt(1); //This is 5
スタックは、あなたがスタックに追加最初の項目を取得したい場合は、あなたが使用することができ、最初のうちに最後なので:
int val = foo.ElementAt(foo.Count - 1);
はElementAt
は、LINQの拡張メソッドである、覚えておいてくださいそのスタックを配列として列挙し、目的のインデックスを返します。大規模なスタックの場合、またはパフォーマンスが重要な場合は、List<T>
などの別のデータ構造を使用することを検討してください。
IEnumerableのLINQ拡張メソッドを利用しています。 OPはそれを実現するためにそこに行っている体操を意識させるべきです。 –
thnkx uとてもMikeとても助かりました – user1220052
@ChrisShain - うん、確かに有効なポイント.. –
FYIでは、言語は "CSharp"ではなく、 "CSharp"ではありません –