C# プログラミングでは、列挙型の汎用制約がないため、フラグ列挙型に対して特定の操作を実行しようとするときに問題が発生する可能性があります。この問題を解決するには、UnconstrainedMelody ライブラリを使用した回避策を詳しく見てみましょう。
UnconstrainedMelody は、「疑似」汎用制約を「実際の」制約に変換します。たとえば、次のようになります:
<code>where T : struct, IEnumConstraint</code>
に変換:
<code>where T : struct, System.Enum</code>
これにより、開発者は次のようなメソッドを定義できます。
<code>public static bool IsSet<T>(this T input, T matchTo) where T : System.Enum { return (input & matchTo) != 0; }</code>
このメソッドを使用すると、次のことが可能になります:
<code>MyEnum tester = MyEnum.FlagA | MyEnum.FlagB; if (tester.IsSet(MyEnum.FlagA)) // 对标志 a 执行操作</code>
UnconstrainedMelody は、ビルド後の手順が完了した後、シームレスに統合されます。
ただし、複数のフラグが指定されている場合の「IsSet」メソッドの動作を考慮してください。
<code>tester.IsSet(MyFlags.A | MyFlags.C);</code>
すべてのフラグが設定されているかどうかを確認する必要がありますか、それとも 1 つだけを確認する必要がありますか?推奨される動作は、すべてのフラグをチェックすることです。
UnconstrainedMelody は、このメソッドにいくつかの名前付けオプションを提供します。
「IsSet」という名前は機能しますが、フィードバックは歓迎です。この回避策は変更される可能性があり、UnconstrainedMelody はパッチまたは直接の提出を歓迎することに留意してください。
以上がC# での Enum 汎用制約の欠如を回避するにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。