文字列値を持つ列挙型を定義するにはどうすればいいですか? 質問する

文字列値を持つ列挙型を定義するにはどうすればいいですか? 質問する

を定義しEnum、CSV または同様のファイルで使用される有効な共通セパレーターを追加しようとしています。次に、それをデータ ソースとして にバインドします。ComboBoxこれにより、Enum 定義に追加または削除するたびに、コンボ ボックスで何も変更する必要がなくなります。

問題は、次のように文字列表現を使用して enum を定義する方法です。

public enum SeparatorChars{Comma = ",", Tab = "\t", Space = " "}

ベストアンサー1

できません。列挙値は整数値である必要があります。属性を使用して各列挙値に文字列値を関連付けるか、またはこの場合、すべての区切り文字が 1 文字であれば、値を使用できますchar

enum Separator
{
    Comma = ',',
    Tab = '\t',
    Space = ' '
}

char(編集: 明確にするために、列挙型の基になる型を作成することはできませんが、char定数を使用して、各列挙型の値に対応する整数値を割り当てることができます。上記の列挙型の基になる型は ですint。)

必要に応じて拡張メソッドを使用します。

public string ToSeparatorString(this Separator separator)
{
    // TODO: validation
    return ((char) separator).ToString();
}

おすすめ記事