PR

 スタックを扱うにはStackクラスを利用する。スタックとは,後入れ先出し型の配列である。Stackオブジェクトの容量とは,Stackオブジェクトが保持できる要素数である。Stackオブジェクトの容量のデフォルトの初期値は10である。

 Stackオブジェクトに要素を追加すると,必要に応じて容量が自動的に増加する。だが,要素を削除しても,そのままでは容量は変わらない。容量を減らすには,TrimExcessメソッドを呼び出す。

 Stackオブジェクトにはnull参照も格納でき,さらに要素の重複も許可する。

 要素がobject型のSystem.Collections.Stackクラスと異なり,Genericsを利用したSystem.Collections.Generic.Stackクラスは,特定のデータ型のみを要素に格納できる。例えばstring型のスタックを利用しようとした場合,System.Collections.Stackオブジェクトで実装すると,要素にstring型以外のデータも格納できてしまう。それに対してSystem.Collections.Generic.Stackオブジェクトを使えば,格納できる要素を特定のデータ型(この例の場合はstring型)に限定することができ,コードの安全性を高められる。

サンプルコードを見る


名前空間
System.Collections.Generic
対応バージョン
.NET Framework 2.0
.NET Compact Framework 2.0
主なプロパティ
Count
Stackオブジェクトに格納されている要素の数を取得する。

主なメソッド
Clear
Stackオブジェクトからすべてのオブジェクトを削除する。だが,容量は変化しない。容量を小さくするには,TrimExcessメソッドを呼び出す。

Contains
引数に指定したオブジェクトが,Stackオブジェクト内に存在するかどうかを調べる。引数に指定したオブジェクトがStackオブジェクト内に存在する場合はTrue,それ以外の場合はFalseを返す。

CopyTo
Stackオブジェクトの要素を既存の1次元配列にコピーする。コピー元のStackオブジェクトの要素数が,コピー先の配列に格納できる要素の数を超えている場合,ArgumentException例外が発生する。

Peek
Stackの先頭にあるオブジェクトを返す。そのオブジェクトを削除しない。Stackオブジェクトが空の場合は,InvalidOperationException例外が発生する。Popメソッドとの違いは,このメソッドが返したオブジェクトを削除しないことである。

Pop
Stackオブジェクトの先頭にあるオブジェクトを返し,そのオブジェクトをStackオブジェクト内から削除する。Stackオブジェクトが空の場合は,InvalidOperationException例外が発生する。Peekメソッドとの違いは,このメソッドが返したオブジェクトを削除することである。

Push
Stackオブジェクトの先頭に,引数に指定したオブジェクトを追加する。要素が参照型の場合は,null参照も追加できる。必要に応じてStackオブジェクトの容量が増加する。

ToArray
Stackオブジェクトの要素を,新たに作成した配列にコピーし,その配列を返す。

TrimExcess
Stackオブジェクトに格納されている実際の要素数が現在の容量の90%未満の場合に,容量をその数に設定し直す。実際の要素数が現在の容量の90%以上の場合は,メモリーの再割り当てとコピーのコスト増大を防ぐため,何もしない。Popメソッドなどを呼び出してStackオブジェクト内の要素が削除されても,そのままではStackオブジェクトの容量は変わらない。容量を削減するときに,TrimExcessメソッドを呼び出す。