私の人生では、ビットフィールドのビットを設定、削除、切り替え、またはテストする方法を思い出せません。わからないか、めったに必要ないので、混同しています。したがって、「ビットチートシート」があればよいでしょう。 例えば: flags = flags | FlagsEnum.Bit4; // Set bit 4. または if ((flags & FlagsEnum.Bit4)) == FlagsEnum.Bit4) // Is there a less verbose way? 他のすべての一般的な操作の例を、できれば[Flags]列挙型を使用したC#構文で提供できますか?
私がこの列挙型を持っているとしましょう: [Flags] enum Letters { A = 1, B = 2, C = 4, AB = A | B, All = A | B | C, } たとえばAB設定されているかどうかを確認するには、次のようにします。 if((letter & Letters.AB) == Letters.AB) 結合されたフラグ定数のフラグのいずれかが以下よりも設定されているかどうかを確認する簡単な方法はありますか? if((letter & Letters.A) == Letters.A || (letter & Letters.B) == Letters.B) たとえば&、何かを交換できますか? このようなバイナリのものに関してはあまり安定していません...
2つのエラーフラグをチェックするスクリプトを作成しようとしています。1つのフラグ(または両方)が変更された場合、エコーされます-エラーが発生しました。私のスクリプト: my_error_flag=0 my_error_flag_o=0 do something..... if [[ "$my_error_flag"=="1" || "$my_error_flag_o"=="2" ] || [ "$my_error_flag"="1" && "$my_error_flag_o"="2" ]]; then echo "$my_error_flag" else echo "no flag" fi 基本的には、次のようになります。 if ((a=1 or b=2) or (a=1 and b=2)) then display error else no error fi 私が得るエラーは: line 26: conditional binary operator expected line 26: …
私がやりたいことは次のようなものです:フラグ付きの値を組み合わせた列挙型があります。 public static class EnumExtension { public static bool IsSet<T>( this T input, T matchTo ) where T:enum //the constraint I want that doesn't exist in C#3 { return (input & matchTo) != 0; } } だから私はできる: MyEnum tester = MyEnum.FlagA | MyEnum.FlagB if( tester.IsSet( MyEnum.FlagA ) ) //act on …