우선, 각 플래그는 열거에 하나의 비트를 표현한다 :
CandD = 12, //has both c and d flags set.
또는 경우를 :
이
enum X { a = 1, b = 2, c = 4, d = 8 }
이것은 당신이뿐만 아니라 플래그를 결합 할 수 있습니다 그 중 많은 수가 있습니다 :
enum X {
a = 1 << 0,
b = 1 << 1,
c = 1 << 2,
d = 1 << 3,
...
CAndD = c | d
}
간단한 동일성 비교를 사용하여 특정 플래그 만 테스트 할 수 있습니다 설정됩니다.
public bool ContainsOnly(X value, X flags)
{
return value == flags;
}
public bool ContainsOnlyCandD(X value)
{
return value == (X.c | X.d);
}
public bool ContainsBothCandDButCouldContainOtherStuffAsWell(X value)
{
return (value & (X.c | X.d)) == (X.c | X.d);
}
출처
2016-08-18 23:38:46
Bas
특정 문제를 명확히하거나 추가 세부 정보를 추가하여 강조 표시하십시오. 정확히 당신이 필요로하는 것. 현재 작성된 내용이므로 귀하가 원하는 내용을 정확하게 말하기는 어렵습니다. – Marusyk
'(m_ StatusType & (a | b)) == a | b' –
'[Flags]'를 사용하는 enum 유형에 대한 _thorough_ 토론 및 사용 방법은 duplicate를 참조하십시오. 남아있는 혼란으로 자신을 발견하면 문제가 무엇인지 분명하게 보여주는 좋은 [mcve]가 포함 된 새로운 질문을 게시하십시오. 코드가하는 일, 원하는 작업, 설명하는 데 어려움이있는 것을 설명하십시오. –