C#のStackクラスとは?主なプロパティとメソッドを徹底解説
Stackクラスとは
C#のStackクラスは、後入れ先出し(LIFO:Last-In, First-Out)という仕組みでオブジェクトを管理するコレクションです。スタックでは、最後に追加した要素が最初に取り出されるため、「直近に追加したデータから順番に処理したい」という場面で活用されます。
例えば、操作履歴の「元に戻す(Undo)」機能や、再帰的な処理の一時保存など、LIFO構造が自然にマッチするケースでよく使われています。
Stackクラスの主なプロパティ
- Count ― スタックに格納されている要素の数を取得します。
Stackクラスの主なメソッド一覧
Stackクラスには、要素の追加・削除・参照などを行うための便利なメソッドが用意されています。以下に主要なメソッドをまとめました。
| No. | メソッドと説明 |
|---|---|
| 1 | public virtual void Clear(); スタックからすべての要素を削除します。 |
| 2 | public virtual bool Contains(object obj); 指定した要素がスタック内に存在するかどうかを判定します。 |
| 3 | public virtual object Peek(); スタックの先頭にあるオブジェクトを、削除せずにそのまま返します。 |
| 4 | public virtual object Pop(); スタックの先頭にあるオブジェクトを取り出し(削除し)、そのオブジェクトを返します。 |
| 5 | public virtual void Push(object obj); オブジェクトをスタックの先頭に挿入します。 |
| 6 | public virtual object[] ToArray(); スタックの内容を新しい配列へコピーします。 |
使用例
以下は、Stackクラスを使った簡単なサンプルコードです。
using System;
using System.Collections;
class Program
{
static void Main()
{
Stack stack = new Stack();
// 要素を追加(Push)
stack.Push("りんご");
stack.Push("バナナ");
stack.Push("みかん");
Console.WriteLine(stack.Peek()); // 出力: みかん(削除されない)
Console.WriteLine(stack.Pop()); // 出力: みかん(削除して返す)
Console.WriteLine(stack.Contains("りんご")); // 出力: True
Console.WriteLine(stack.Count); // 出力: 2
// すべての要素を配列として取得
object[] items = stack.ToArray();
}
}
まとめ
Stackクラスは、LIFO方式でデータを管理したいときに非常に有用なコレクションです。Pushで追加、Popで取り出し、Peekで先頭要素の確認など、直感的なメソッドが揃っているため、履歴管理や一時的なデータ保持など、さまざまなシーンで活用できます。
-
C#のConsoleクラスとは?主要プロパティの使い方を実例付きで解説
C#のConsoleクラスは、コンソールアプリケーションにおける標準入力・標準出力・標準エラー出力の各ストリームを表すクラスです。テキストの表示や入力の読み取りだけでなく、文字色や背景色の変更、カーソル位置やサイズの制御など、コンソール操作に関するさまざまな機能が提供されています。ここでは、Consoleクラスの代表的なプロパティの使い方を、サンプルコードと実行結果とあわせて解説します。Console.CursorLeftプロパティコンソール上のカーソル位置(左端から数えた列位置)を変更するには、Console.CursorLeftプロパティを使用します。サンプルコードusing System
-
Pythonのオブジェクト指向プログラミング入門:クラス・インスタンス・カプセル化の基礎を解説
Pythonは、誕生当初からオブジェクト指向プログラミング言語として設計されてきました。クラスとオブジェクトは、オブジェクト指向プログラミングにおける2つの主要な構成要素です。クラスは新しい型のオブジェクトを作り出すための設計図であり、そのクラスから生成された個々の実体が「インスタンス(オブジェクト)」と呼ばれます。それでは、最もシンプルなクラスを作成してみましょう。Pythonでクラスを定義するまず、空のクラスを定義してみます。# クラスを定義する class Vehicle(): pass # 空のブロック # オブジェクトのインスタンス化 v = Vehicle() prin