0Pricing
C# Academy · レッスン

列挙型の変換と解析

列挙型、整数、文字列の間で変換します。

「列挙型の変換と解析」はCoddyKit上の無料C# Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC# Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C# Academyコースには全4レッスンが含まれています。

列挙型から整数へ

(int) を使って列挙型を基になる型にキャストすると、数値を取得できます。

using System;

enum Level { Low, Medium, High }
class Program {
    static void Main() {
        int n = (int)Level.High;
        Console.WriteLine(n);
    }
}

整数から列挙型へ

数値を列挙型にキャストして戻すことができます。ただし、その値が定義済みのメンバーであるとは限らないため、必要に応じて確認してください。

using System;

enum Level { Low, Medium, High }
class Program {
    static void Main() {
        Level l = (Level)2;
        Console.WriteLine(l);
    }
}

IsDefined による検証

Enum.IsDefined を使うと、信頼する前に数値や名前が実際のメンバーに対応しているかを確認できます。

using System;

enum Level { Low, Medium, High }
class Program {
    static void Main() {
        Console.WriteLine(Enum.IsDefined(typeof(Level), 1));
        Console.WriteLine(Enum.IsDefined(typeof(Level), 9));
    }
}

列挙型から文字列へ

ToString はメンバー名を返すため、表示やログ出力に便利です。

using System;

enum Level { Low, Medium, High }
class Program {
    static void Main() {
        Console.WriteLine(Level.Medium.ToString());
    }
}

文字列からの解析

Enum.Parse は名前を列挙値に戻しますが、名前が無効な場合は例外をスローします。

using System;

enum Level { Low, Medium, High }
class Program {
    static void Main() {
        Level l = (Level)Enum.Parse(typeof(Level), "High");
        Console.WriteLine(l);
    }
}

ジェネリックな Parse

ジェネリック形式の Enum.Parse<T> を使うと、キャストが不要になり、コードも読みやすくなります。

using System;

enum Level { Low, Medium, High }
class Program {
    static void Main() {
        Level l = Enum.Parse<Level>("Medium");
        Console.WriteLine(l);
    }
}

TryParse による安全な解析

Enum.TryParse は例外をスローする代わりに成功したかどうかを bool で返すため、ユーザー入力に対してより安全です。

using System;

enum Level { Low, Medium, High }
class Program {
    static void Main() {
        if (Enum.TryParse<Level>("Low", out var result))
            Console.WriteLine("Parsed: " + result);
    }
}

不正な入力への対処

解析に失敗すると、TryParse は false を返すため、適切に対処できます。

using System;

enum Level { Low, Medium, High }
class Program {
    static void Main() {
        bool ok = Enum.TryParse<Level>("Unknown", out var result);
        Console.WriteLine(ok ? result.ToString() : "Invalid input");
    }
}

大文字と小文字を区別しない解析

true を渡すと、ユーザーが入力したテキストを解析する際に大文字と小文字を無視できます。

using System;

enum Level { Low, Medium, High }
class Program {
    static void Main() {
        Level l = Enum.Parse<Level>("high", true);
        Console.WriteLine(l);
    }
}

名前の解析では TryParse が IsDefined より優れている

名前を解析する場合、TryParse は有効性の確認と変換を1回の呼び出しで行えます。

using System;

enum Level { Low, Medium, High }
class Program {
    static void Main() {
        string input = "Medium";
        if (Enum.TryParse<Level>(input, out var lvl) && Enum.IsDefined(typeof(Level), lvl))
            Console.WriteLine("Valid: " + lvl);
    }
}

往復変換

値が有効であれば、列挙型から int に変換して戻したり、文字列に変換して戻したりできます。

using System;

enum Level { Low, Medium, High }
class Program {
    static void Main() {
        Level start = Level.High;
        int num = (int)start;
        Level back = (Level)num;
        Console.WriteLine(start == back);
    }
}

クイックチェック

列挙型の変換と解析についての知識を確認しましょう。

まとめ

(int) と (EnumType) を使って列挙型と基になる整数の間でキャストし、Enum.IsDefined で検証します。ToString はメンバー名を返します。

Enum.Parse<T>(例外をスロー)または、より安全な Enum.TryParse<T>(bool を返す)を使うと、名前を列挙値に戻せます。大文字と小文字を区別しない解析も指定できます。

よくある質問

「列挙型の変換と解析」レッスンは無料ですか?

はい。「列挙型の変換と解析」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C# Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C# Academyコースには全4レッスンが含まれています。

「列挙型の変換と解析」で何を学びますか?

列挙型、整数、文字列の間で変換します。 ブラウザで直接実行するハンズオンコードでC# Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C# Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC# Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「列挙型の変換と解析」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC# Academyレッスンでコードを書いて実行できますか?

はい。すべてのC# Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 列挙型の定義と使用
  2. Flags列挙型とビット演算による組み合わせ
  3. 列挙型の変換と解析
  4. 列挙値の反復処理
← C# Academyに戻る