問題タブ [enum-flags]

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 投票する
1 に答える
5992 参照

c# - フラグ列挙型から数値を取得するには?

重複の可能性:
int 値を返す列挙型
列挙型から数値を取得するにはどうすればよいですか?

これはこれらのいずれかの複製ではありません。質問MODを読んでくれてありがとう

いくつかのフラグ列挙項目が選択されているとします。

の値はselected3 (つまり 2 + 1) に対応する必要があります

これをintにするにはどうすればよいですか?

selectedToString() をキャストしてから split() を各オプションにキャストする例を見てきました。

次に、それぞれの列挙型に再構成され、そこから値が取得されますが、少し面倒です。これらの値の合計を取得するより簡単な方法はありますか?

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

c# - コンパイラが16進値を受け入れられるようにするにはどうすればよいですか?

http://www.pinvoke.net/default.aspx/coredll/playsound.htmlのコードを使用しようとしています

ただし、いくつかのエラーメッセージが発生します。つまり、「予期しない文字'×'」が26回発生します。

そこで、次のように、valsを逐語的な文字列に変更してみました。

SND_SYNC = @ "0×0000"、

...しかし今、私は「タイプ'文字列'を'int'に暗黙的に変換することはできません」を取得します

これらの文字列をintに変換できることはわかっていますが、それは本当にそれを行う方法ですか?私はそれをそのようにコンパイルすることができるかもしれないのではないかと心配していますが、それでも動作しません(またはさらに悪いことに)。コンパイラがそれらを受け入れるように、これらの16進値をそのようにマークする適切な方法は何ですか?

コードの最初のビットは次のとおりです。

[DllImport( "winmm.dll"、SetLastError = true)] static extern bool PlaySound(string pszSound、UIntPtr hmod、uint fdwSound);

0 投票する
0 に答える
165 参照

list - Dictionary と組み合わせた列挙型フラグ

私の問題を定義する簡単な方法が見つかりませんでしたが、できる限り説明しようと思います。

事前定義されたアイテムの選択を表すことができる必要があります。プログラムにはこれらの選択のインスタンスが何千もあり、インスタンスごとのアイテムの選択を表すことができる単一の値が必要です (多くの選択が繰り返されます)。

列挙型を使用した私の最初のソリューションは、この時点では問題ないように見えますが、問題があるようです...列挙型フラグは、一意の項目ごとに 1 ビットとして表され、言語が列挙型 (C#) に対して処理できる最大値は 64 ビットです。設定および設定解除する必要がある任意の数の値があります。

ソリューション例 1:

私の 2 番目の解決策は、選択リストを作成し、ID 番号を使用してインスタンスでこの選択を参照することです。

ソリューション例 2:

ソリューションの要件は、メモリ使用量が少ないこと (モバイル アプリケーション用に開発中)、使いやすさ (オンザフライで編集できる必要があること) です。

私の要件を考慮して、どのソリューションが最適でしょうか?また、どのようにこれを達成したり、要件を満たすために単純化したりできますか?

0 投票する
2 に答える
267 参照

c# - Flags列挙型を複数のコンボボックスにマップする方法は?

Flags Enumeration を複数のコンボ ボックスにマップする必要があります。

たとえば、最初の 2 ビットは、画面のコントラスト設定のコンボ ボックスに対応する必要があります。

ビット 2 と 3 は音声ボリュームに対応する必要があります

ビット 4 と 5 はブザーの音量に対応します。

ビット 6 はエントリまたはエグジットに対応します (つまり、オンの場合はエントリ、オフの場合はエグジット)。

私のフラグ列挙型は次のように定義されています。

これらを適切なコンボ ボックスにマップし、各コンボ ボックスの値を正しい列挙値に変換して保存する最善の方法は何ですか?

0 投票する
1 に答える
122 参照

c++ - フラグと状態をチェックする直感的な方法はありますか?

私のケースに関連する答えが見つからなかったので、私の状況を説明してみます:

私は次のコードを持っています:

私のコードはドキュメントの字句解析用であり、コメントブロックにない場合にのみアクションを実行しようとしています。コメントがない場合、上記のステートメントは正反対の結果を返します...

次のステートメントは正しく機能しますが、直感に反しているようです。

if (lexStatus & fInCommentBlock == fInCommentBlock)

したがって、質問は次のとおりです。

  • なんで?なぜそれは私が期待しているものとは完全に反対に機能するのですか?

オペレーターの優先順位if ((lexStatus & fInCommentBlock) != fInCommentBlock)により、問題が修正されます

  • 私は正しい方法に近づいていますか?
  • もっと良い方法はありますか?
  • 各フラグに異なる値があることを確認する方法はありますか?

lexStatus & fInCommentBlockコードのどこにも設定していなくても、一部のビットが設定されているため、最後の質問が追加されました...

よろしくお願いします!

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

c# - フラグ列挙型が通常16進値で定義されるのはなぜですか

多くの場合、16進値を使用するフラグ列挙型宣言を目にします。例えば:

列挙型を宣言するときは、通常、次のように宣言します。

一部の人々が値を10進数ではなく16進数で書き込むことを選択する理由または理論的根拠はありますか?私の見方では、16進値を使用すると混乱しやすく、のFlag5 = 0x16代わりに誤って書き込むことがありFlag5 = 0x10ます。

0 投票する
0 に答える
380 参照

json - FlagsEnum、ModelBinders、JSONの操作

FlagsEnum(列挙型:バイト)で動作するようにModelBinderを変更するにはどうすればよいですか?コードを表示します:

コード

列挙型

クラス

Json

モデルバインダー

JSONを使用しない場合に機能し、両方のEnunをFlagsEnunとして使用します。

質問

ご覧のとおり、クラスPessoaViewModelでは、プロパティTipoはの複数の値を取ることができますTipoPessoaEnum

プロパティTipoは複数の値を取ることができるため、(JSON形式で)の配列を送信していますTipo "Tipo":["Comprador","Proprietario"]。enunsの値はどれですか。

json配列 "Tipo":["Comprador","Proprietario"]をプロパティにマップする方法はTipo??

モデルバインダー

GetValue<T>クラスのメソッドでは、CreditoImobiliarioModelBinderこれbindingContext.ValueProvider.GetValue("Tipo"); はnullを返します??

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

c# - 列挙型に共通のフラグがあるかどうかを確認します

この拡張メソッドがあると考えてください:

そして、次の状況:

foo に bar と共通のフラグがあるかどうかを確認したいのですが、拡張メソッドでこの動作を実現するためのより良い方法が必要です。

私もこのように試しましたが、常にtrueを返します:

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

c# - コンマ区切りリストまたは整数からの列挙型フラグの解析

いくつかのフラグを含む XML があります。そのうちのいくつかは符号なし 32 ビット整数で、その他は符号なし 64 ビット整数です。それらの一部はコンマ区切りのリストで記述され、その他は 16 進形式で記述されています。

次の例を参照してください。

各列挙型を解析するメソッドを書きたくないので、ジェネリック メソッドを使用することにしました。しかし、Visual Studio ではソリューションをビルドできません。これが私の方法です:

私が得るエラーメッセージは次のとおりです。

エラー 1 演算子 '|=' は型 'T' および 'T' のオペランドには適用できません

これを行う方法はありますか?

0 投票する
2 に答える
2673 参照

c# - 1 つのフィールドを除くフラグ列挙型のすべての値の設定

私は次の宣言を持っています

たとえば、次の列挙型:

ここで、「クリア」フラグを除くすべてのフラグを設定したいと考えています。私はこれを試しました:

しかし、私は次のメッセージを受け取ります

たとえば、次のようにフラグを設定します。

正常に動作します。

だから問題は、私のアプローチで「クリア」フィールドの代わりにFlagEnumのすべてのフィールドを設定するにはどうすればよいですか? または、これは不可能であり、この要件を実装する必要があります。