0
이 질문의 코드를 사용하십시오. How do I check if more than one enum flag is set?이 테스트를 수행하는 일반 확장을 구현하려고했습니다.둘 이상의 플래그가 일반 확장으로 설정되어 있는지 확인하십시오.
첫 번째 시도는 다음과 같습니다. '-'
운영자 결과
public static bool ExactlyOneFlagSet(this Enum enumValue) { return !((enumValue & (enumValue - 1)) != 0); }
은 'System.Enum'와 'INT'
OK 메이크업 감각 유형의 피연산자에 적용, 그래서 나는 생각 될 수 없다 나는 이런 것을 시도 할 것입니다.
public static bool ExactlyOneFlagSet<T>(this T enumValue) where T : struct, IConvertible
{
return !(((int)enumValue & ((int)enumValue - 1)) != 0);
}
그 결과
또한이 확장 방법이 구현 될 수있다 지구에이 문제에 대한 책을 읽은하지만 방법 후 의미가 'INT'
에 유형 'T'를 변환 할 수 없습니다. 도움이 될 정도로 친절한 누군가 ??? 당신이 IConvertible을 구현하는 T
을 contrain 때문에
당신처럼 보이는 당신이 공급자에 문화를 필요로한다! int v = enumValue.ToInt32 (System.Threading.Thread.CurrentThread.CurrentCulture); 내가 잘못? 그렇지 않으면 지금 시험해 보면 아름다워. –