C#のintからenumへの変換 [重複]について
2023-09-21 16:25:59
質問
重複の可能性があります。
C#でintをenumにキャストする
以下のようなコードがあった場合。
enum foo : int
{
option1 = 1,
option2,
...
}
private foo convertIntToFoo(int value)
{
// Convert int to respective Foo value or throw exception
}
変換コードはどのようなものになるのでしょうか?
どのように解決するのですか?
intをFooにキャストすればよいのです。
int i = 1;
Foo f = (Foo)i;
もし、定義されていない値をキャストしようとしても、それはまだ動作します。これによって生じるかもしれない唯一の害は、後でその値をどのように使用するかということです。
もし本当に値が列挙型で定義されていることを確認したいのであれば、Enum.IsDefinedを使用することができます。
int i = 1;
if (Enum.IsDefined(typeof(Foo), i))
{
Foo f = (Foo)i;
}
else
{
// Throw exception, etc.
}
しかし、IsDefinedを使用すると、キャスト以上のコストがかかります。どちらを使うかは実装に依存します。ユーザーの入力を制限したり、enumを使用する際にデフォルトのケースを処理することを検討するとよいでしょう。
また、enumがintを継承していることを指定する必要はなく、これがデフォルトの動作であることに注意してください。
関連
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] C#の[Flags]Enum属性の意味とは?
-
[解決済み] JavaScriptSerializer - 列挙型を文字列としてJSONシリアライズする
-
[解決済み] Java で Int を enum にキャストする
-
[解決済み】TをEnumに拘束するGenericメソッドの作成
-
[解決済み】C#で文字列をenumに変換する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み】"出力タイプがクラスライブラリのプロジェクトは直接起動できない"
-
[解決済み】C#はJavaのcharAt()と同等?)
-
[解決済み】「namespace x already contains a definition for x」エラーの修正方法は?VS2010にコンバートした後に発生しました。
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】IntPtrとは一体何なのか?
-
[解決済み】Unityでゲームオブジェクトのすべての子をループスルーして破壊する方法?
-
[解決済み】画像のペイントにTextureBrushを使用する方法
-
[解決済み】「namespace」なのに「type」のように使われる。
-
[解決済み] intをenumにキャストするにはどうすればよいですか?