問題タブ [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 投票する
6 に答える
1252 参照

c# - .NETのフラグ列挙型

[Flags]に起因する列挙を設定する一連の条件ステートメントを使用しようとしています。ただし、コンパイラは「m」が割り当てられていないと文句を言います。意図した機能を実現するために、次のように書き直すにはどうすればよいですか?

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

c# - C#: KeyEventArgs の KeyData から押された正しいキーを取得する

イベントをトラップしていKeyDownます。現在押されているキーが : Ctrl+ Shift+ M ?


、列挙型、および列挙型フラグとビットを含む何かを使用e.KeyDataする必要があることはわかっていますが、組み合わせを確認する方法がわかりません。KeyEventArgsKeys

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

c# - C#、Flags Enum、フラグを探す汎用関数

フラグが存在するかどうかを確認するために、Flags スタイルの列挙型で使用できる汎用関数が 1 つ必要です。

これはコンパイルされませんが、誰かが提案を持っていれば、私はそれを感謝します.

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

c# - 列挙型とビット単位の操作と「ビットの文字列」のフラグ

仲間の開発者は、選択した曜日を 1 と 0 の 7 文字の文字列として保存することを提案しました。つまり、月曜日と金曜日を表す「1000100」です。私は、Flags 列挙型とビット単位の操作を使用したソリューションを好みました (そして強く提案しました)。これは、これを行うためのよりクリーンな方法であり、他の開発者にとって理解しやすいはずです。

しかし、サンプル ソリューションの実装を開始したとき、単純な文字列アプローチの方が結局は簡単であることに気付きました。確かに、データだけを見ている場合、ビット文字列は「17」よりも明白です。そして、C# のビット演算は直感に反し、非常に冗長であることがわかりました。

もちろん、これは拡張メソッドにうまくラップできますが、突然、少なくとも文字列ソリューションと同じ数のコード行ができてしまい、ビット単位のコードの方が読みやすいとは言えません。

そうは言っても、私はまだフラグ列挙型とビット単位の操作を使用します。私が考えることができる主な利点は次のとおりです。

  • よりよい性能
  • 保管に必要なスペースが少ない

では、ビット単位のソリューションを同僚に販売するにはどうすればよいでしょうか。するべきか?文字列に対してこのメ​​ソッドを使用することの他の利点は何ですか? サンプル プロジェクトを完了した後、チームがまだ文字列ベースのソリューションを選択していることに気付きました。より良い/より強力な議論が必要です。単純なビット文字列ではなく、Flags 列挙型を使用する必要があるのはなぜですか?

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

c# - フラグ列挙混乱 C#

私のコードによると、a = 1、b = 2、c = 3など。フラグはa = 1、b = 2、c = 4などになると思いました

意図したものを取得するにはどうすればよいですか (c=4, e=8)? そして、[Flags]上記の意味は何ですか?

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

wpf - フラグ列挙型へのWPFデータバインディング(PropertyGrid内)

WPFビュー(PropertyGrid内のすべて)からのフラグ列挙の性質と同様に、複数の値を選択する機能が必要です。

問題のプロパティは動的であり、プロパティのタイプは実行時に検出されるため、事前定義されたDataTemplatesを使用することはできません。(列挙型がフラグであるかどうかを検出できるDataTemplateは役立つ場合がありますが、私の理解から、これを実現するには事前にFlag Enumタイプを知る必要がありますが、そうではありません)。

私はWPF用の独自のオープンソースプロパティグリッドをいくつか試しましたが、すぐに使用できる「フラグ」属性の列挙型をサポートしているものはないようです。

この問題の解決策は、データバインドして、商用またはオープンソースのWPFPropertyGridのFlagsEnumに複数の値を選択できるようにすることです。

コード:

PropertyTypeの例:

フラグ列挙型の例:

ノート:

ソリューションでオープンソースのWPFPropertyGrid(http://www.codeplex.com/wpg)を使用する場合は、変更/追加をコントロールに実装します。

ありがとう。

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

c# - カスタム WPF コントロールで依存関係プロパティを使用して計算値を処理する方法

私がやっていることを要約すると、チェックされたリストボックスのように見え、2 つの依存関係プロパティを持つカスタム コントロールがあります。

前述したように、カスタム コントロールは 2 つの異なる DependencyProperties を公開します。1 つは Options というオプションのリストで、もう 1 つのSelectedOptionsというプロパティは、[Flags] 属性を使用して値の組み合わせを設定できる特定の Enum 型です。私の UserControl には、チェックボックスとともにオプションを表示するために使用される ListBox に似た ItemsControl が含まれています。チェック ボックスがオンまたはオフの場合、SelectedOptions プロパティは、対応するビット演算を使用して適宜更新する必要があります。

私が経験している問題は、プライベート フィールドを維持し、プロパティ変更イベントを処理してプロパティを更新する以外に方法がないことです。これは、WPF では不自然に感じます。ValueConverters を使用してみましたが、実際には値コンバーター バインディングでバインディングを使用できないという問題が発生したため、許容できない ValueConverter パラメーターとして列挙値をハードコーディングする必要があります。誰かがこれを正気で行う方法の良い例を見たことがあれば、どんな意見でも大歓迎です。

補足: これは、依存関係プロパティが計算値または遅延値をどのように許可しないかについて頭を悩ませようとしていたときに、過去にも発生した問題でした。もう 1 つの例は、子コントロールのプロパティを親コントロールのプロパティとして公開したい場合です。この場合、バインディングを使用することをお勧めしますが、ターゲットが親プロパティになるようにバインディングを配置するため、子コントロールのプロパティが依存関係プロパティである場合にのみ機能します。親コントロールのユーザーが独自のバインディングを設定したい場合は上書きされます。そのプロパティのために。

0 投票する
5 に答える
3525 参照

c# - Flags列挙型からのランダム値

Flags属性で装飾された列挙型を受け入れる関数があるとします。列挙型の値が複数の列挙型要素の組み合わせである場合、これらの要素の1つをランダムに抽出するにはどうすればよいですか?私は以下を持っていますが、もっと良い方法があるに違いないようです。

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

c++ - 名前の列挙型フラグ

クラスを初期化するためのオプションに列挙型フラグを使用します。列挙型は次のとおりです。

私が正しい場合、この場合、STATICをチェックするには、次のことを行う必要があります。

私はそれをこのようにすることを知っています:

列挙型の名前を削除する必要があります。しかし、それは本当に必要ですか?どこにでも名前を入力せずに名前付き列挙型の列挙値を使用することはできませんか?

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

c# - C# - [Flags] 列挙型と拡張メソッドのヘルプ

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

出発点として、これらのフラグが正しいかどうかはわかりません。

これを行っているのは、Entity Framework の "Includes" を定義する流暢な方法があるためです (EF Include メソッドは文字列を受け取るため、UI に公開したくないため)。

サービス層がPostAssociationsを受け入れることができるようにしたいので、サービス層では拡張メソッドを利用してこれを文字列[]に変換します。(私のリポジトリは、.Include を実行するために分割されます)。

私は Flags Enum をあまり使っていないので、無知で申し訳ありません。:)

これは私が欲しいものの「真理値表」です (列挙値、変換された文字列[])

コメントなしで CommentsUser を持つことはできません。

だから私は3つのことで助けが必要です:

  1. その真理値表に一致するように列挙型を設定する方法は?
  2. これらの例の 1 つのサービス層を呼び出すにはどうすればよいですか?
  3. その列挙型を文字列配列に変換する拡張メソッドを作成するにはどうすればよいですか?

もちろん、私がやろうとしていることを行うためのより良い方法を皆さんが考えることができれば、それも検討します. 基本的に、列挙型の背後にある EF インクルードの「魔法の文字列」をマスクしようとしています。

みんなありがとう。