問題タブ [enums]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
15 に答える
8513 参照

java - 重複した Enum コードを削除するにはどうすればよいですか?

このインターフェイスを実装する列挙型が多数あります。

典型的な例は次のとおりです。

ご想像のとおり、これらのメソッドは CodableEnum のすべての実装で実質的に同一です。この重複をなくしたいのですが、率直に言って方法がわかりません。次のようなクラスを使用してみました。

しかし、これはかなり役に立たないことが判明しました。

  1. 列挙型はクラスを拡張できません
  2. 列挙型の要素 (SKYPE、GOOGLE_TALK など) はクラスを拡張できません
  3. DefaultCodableEnum 自体は Enum ではないため、getByCode() のデフォルトの実装を提供できません。DefaultCodableEnum を変更して java.lang.Enum を拡張しようとしましたが、これは許可されていないようです。

リフレクションに頼らない提案はありますか?ありがとう、ドン

0 投票する
4 に答える
3289 参照

nhibernate - NHibernate を使用した列挙型のコレクションのマッピング

NHibernate を使用した列挙型のコレクションのマッピング

具体的には、マッピングに属性を使用します。

現在、私はコレクションをタイプ Int32 としてマッピングする作業を行っており、NH がそれを処理しているように見えますが、それは正確には理想的ではありません。

マップしようとしている列挙型のコレクションをマップしようとすると、「型を特定できません」というエラーが表示されます。

クラスを次のように定義すると言った投稿を見つけました

次に、列挙型をCEnumTypeとしてマップしますが、これにより「CEnumTypeがマップされていません」または同様の結果が得られます。

それで、誰かがこれを行った経験がありますか?

とにかく、例を示すための単純な参照コードのスニペットです

では、この列挙型のコレクションを実際の列挙型としてマップするための正しい属性を誰かが取得しましたか? それらが int ではなく文字列としてデータベースに格納されていれば本当にいいのですが、完全に必要というわけではありません。

0 投票する
22 に答える
430072 参照

c# - T を Enum に制約するジェネリック メソッドを作成する

Enum.Parseという概念を拡張する機能を構築しています

  • Enum 値が見つからない場合にデフォルト値を解析できるようにします
  • 大文字と小文字を区別しない

だから私は次のように書いた:

エラー Constraint cannot be special class が発生していますSystem.Enum

十分に公平ですが、ジェネリック列挙型を許可する回避策はありますか、それともParse関数を模倣して型を属性として渡す必要がありますか?これにより、醜いボクシング要件がコードに強制されます。

編集以下のすべての提案は大歓迎です、ありがとう。

解決しました(大文字と小文字を区別しないようにループを残しました-XMLを解析するときにこれを使用しています)

編集: (2015 年 2 月 16 日) Christopher Currens は、以下の MSIL または F# でコンパイラを強制するタイプ セーフなジェネリック ソリューションを投稿しました。解決策がページのさらに上にある場合は、この編集を削除します。

編集2:(2021年4月13日)C#7.3以降、これに対処し、サポートされているため、受け入れられた回答を変更しましたが、上位の回答を完全に熟読することは、学術的および歴史的関心のために価値があります:)

0 投票する
11 に答える
176197 参照

c# - 列挙型に対する最も一般的な C# ビット操作

私の人生では、ビットフィールドでビットを設定、削除、切り替え、またはテストする方法を思い出せません。これらはめったに必要ないので、よくわからないか、混同しています。したがって、「ビットチートシート」があると便利です。

例えば:

また

できれば [Flags] 列挙型を使用した C# 構文で、他のすべての一般的な操作の例を挙げていただけますか?

0 投票する
7 に答える
24466 参照

c# - 列挙型の基になる値を取得する方法

次の列挙型を宣言しています。

TransactionTypeCode.Shipment から値「S」または TransactionTypeCode.Receipt から値「R」を取得するにはどうすればよいですか?

単純に TransactionTypeCode.ToString() を実行すると、Enum 名 "Shipment" または "Receipt" の文字列が得られるため、マスタードをカットしません。

0 投票する
33 に答える
912996 参照

c# - 列挙型を列挙する方法

enumC#で列挙するにはどうすればよいですか?

たとえば、次のコードはコンパイルされません。

そして、次のコンパイル時エラーが発生します。

「スーツ」は「タイプ」ですが、「変数」のように使用されます

Suit2 番目のキーワードで失敗します。

0 投票する
4 に答える
1296 参照

c# - char Enum と char ボックス化されたオブジェクトを比較するためのヘルパー メソッドが必要です。

次のような列挙型があります。

そして、私はデータベースからデータを引き出しており、1 文字で (ご想像のとおり) 'O' トランザクションが開いているか、'C' トランザクションが閉じているかを示しています。

データはオブジェクトとしてデータベースから出てくるので、比較コードを書くのにかなりの時間を費やしています。

私ができる最善のことは、次のように書くことです。

ただし、これは私が対処しなければならない唯一の文字列挙ではありません.5つまたは6つあり、それらに対して同じメソッドを書くことは控えめに言っても面倒です. おそらくすべての列挙型は System.Enum から継承しますが、それを入力型として設定しようとすると、コンパイル エラーが発生します。これは.NET 1.1にもあるため、ジェネリックは問題外です。

私はしばらくこれに苦労してきました。誰かがこのメソッドを書くより良い方法を持っていますか? また、列挙型全体が System.Enum から継承されていることを明確にすることはできますが、ポリモーフィックなものではありませんか?

0 投票する
6 に答える
4235 参照

python - Pythonでenumをエミュレートおよび/または回避するにはどうすればよいですか?

私はいくつかの Python プロジェクトで列挙型をエミュレートするために小さなクラスを使用してきました。より良い方法はありますか、それとも状況によってはこれが最も理にかなっていますか?

クラスコードはこちら:

0 投票する
15 に答える
67084 参照

c++ - #define、enum、またはconstを使用する必要がありますか?

私が取り組んでいるC++プロジェクトでは、 4つの値を持つことができるフラグの種類の値があります。これらの4つのフラグを組み合わせることができます。フラグはデータベース内のレコードを記述し、次のようになります。

  • 新記録
  • 削除されたレコード
  • 変更されたレコード
  • 既存の記録

ここで、レコードごとにこの属性を保持したいので、列挙型を使用できます。

ただし、コードの他の場所では、ユーザーに表示するレコードを選択する必要があるため、次のように、それを単一のパラメーターとして渡すことができるようにしたいと思います。

だから、私には3つの可能なアプローチがあるようです:

また

また

スペース要件は重要です(バイト対整数)が、重要ではありません。定義を使用すると型の安全性がenum失われ、スペース(整数)が失われるため、ビット演算を実行するときにキャストする必要があります。ランダムが誤って侵入する可能性がconstあるため、私も型安全性を失うと思います。uint8

他にもっときれいな方法はありますか?

そうでない場合は、何を使用しますか、またその理由は何ですか。

PS残りのコードは、#definesのない最新のC ++でかなりクリーンであり、名前空間とテンプレートをいくつかのスペースで使用しているので、それらも問題ありません。

0 投票する
3 に答える
5760 参照

java - そのような列挙型のインターフェイスを構築する方法

私は次の列挙型を持っています:

すべての列挙型にfind()、toString()、およびコンストラクターがあることを確認するためにStringEnumインターフェイスを構築することは可能ですか?

ありがとう。