C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#列挙型のGetNamesメソッドの使い方を解説

C#列挙型のGetNamesメソッドとは

Enum.GetNames()メソッドは、列挙型(enum)に含まれるすべての定数名を文字列の配列として返します。列挙型の全メンバー名を一括して取得したい場合に非常に便利なメソッドです。

列挙型の定義例

まず、次のような列挙型を定義してみましょう。

enum Stock { Watches, Books, Grocery };

このStock列挙型には、「Watches」「Books」「Grocery」という3つの定数が含まれています。

GetNames()で定数名の配列を取得する

定数名の配列を取得するには、GetNames()メソッドを使い、以下のようにforeachループで各要素を順番に取り出します。

foreach(string s in Enum.GetNames(typeof(Stock))) {
}

サンプルコード

それでは、完全なサンプルプログラムを見ていきましょう。

using System;
class Demo {
   enum Stock { Watches, Books, Grocery };
   static void Main() {
      Console.WriteLine("The value of first stock category = {0}",Enum.GetName(typeof(Stock), 0));
      Console.WriteLine("The value of second stock category = {0}",Enum.GetName(typeof(Stock), 1));
      Console.WriteLine("The value of third stock category = {0}",Enum.GetName(typeof(Stock), 2));
      Console.WriteLine("All the categories of stocks...");
      foreach(string s in Enum.GetNames(typeof(Stock))) {
         Console.WriteLine(s);
      }
   }
}

実行結果

このプログラムを実行すると、次のような出力が得られます。

The value of first stock category = Watches
The value of second stock category = Books
The value of third stock category = Grocery
All the categories of stocks...
Watches
Books
Grocery

補足:GetNameとGetNamesの違い

GetName()は指定したインデックスに対応する単一の定数名を返すメソッドであるのに対し、GetNames()は列挙型全体の定数名を配列としてまとめて取得できる点が大きな違いです。個別の値が必要な場合はGetName()、一覧表示や繰り返し処理を行いたい場合はGetNames()といったように、用途に応じて使い分けると効果的です。

  1. C#のGroupBy()メソッドとは?要素をグループ化する使い方を解説

    GroupBy()メソッドとはC#のGroupBy()は、System.Linq名前空間に用意されている拡張メソッドの一つです。指定したキー値に基づいてコレクション内の要素をグループ化し、その結果をIEnumerable<IGrouping<TKey, TElement>>として返します。各グループにはKeyプロパティが割り当てられ、同じキーを持つ要素がひとつのまとまりとして扱われます。サンプルコードまず、次のような整数型の配列を用意します。int[] arr = { 2, 30, 45, 60, 70 };この配列に対してGroupBy()を使い、「50以下の要素」と

  2. Javaのメソッド内に列挙型(enum)は定義できる?エラーの原因と正しい書き方を解説

    Javaの列挙型(enum)は、名前付き定数をひとつのグループとしてまとめて扱うための仕組みです。基本的な構文は以下のとおりです。enum Days { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }列挙型はクラスの中であれば定義できますが、メソッドの中で定義することはできません。メソッド内にenumを記述すると、コンパイル時に「enum types must not be local(列挙型はローカルにしてはならない)」というコンパイルエラーが発生します。エラーになるコード例次のように、メソッド内に直接