6
public enum WeekDays { Sun = 1, Mon = 2, Tue=3, Wed=4, Thu=5, Fri=6, Sat=7 }

私はこの列挙型を持っています、私は列挙型の値を持っています。私がやりたいのは、値を渡すことによって、これを以下の関数に渡したいタイプを取得することです。私はこれをスイッチケースでもっと良い方法で行うことができますか?

例:値は6、次にWeekdays.Friは、タイプとして以下の関数に渡す必要があります。

  public void CreateNew(WeekDays days)
  {
   //Some logic
  }
4

2 に答える 2

11

あなたがする必要があるのは値をキャストすることです。

CreateNew((WeekDays)6);

列挙型の値は基本的に型指定された整数であるため、列挙型と整数型の間で自由に双方向にキャストできます。列挙型に存在しない整数値を問題なくその型にキャストすることも可能です。そのため、それを回避したい場合は、キャストする前に値が存在することを確認する検証を追加することを忘れないでください。

于 2013-01-03T11:52:48.863 に答える
4

列挙型に値をキャストするだけです:

CreateNew((WeekDays)value)

ところで、値のソースが安全でない場合は、通常、値が列挙型で宣言されているかどうかを確認すると便利です。それ以外の場合は合格できます(WeekDays)42

public void CreateNew(WeekDays days)
{  
    if (!Enum.IsDefined(typeof(WeekDays), days))
        throw new ArgumentException();

    // SomeLogic
}
于 2013-01-03T11:52:58.457 に答える