다음과 같은 Enum이 있습니다.
public enum PromotionTypes
{
Unspecified = 0,
InternalEvent = 1,
ExternalEvent = 2,
GeneralMailing = 3,
VisitBased = 4,
PlayerIntroduction = 5,
Hospitality = 6
}
이 Enum에 내가 제공 한 숫자가 포함되어 있는지 확인하고 싶습니다. 예 : 내가 4를 줄 때 Enum은 그것을 포함하므로 True를 반환하고 싶습니다 .7을 줄 경우이 Enum에는 7이 없으므로 False를 반환합니다. Enum.IsDefine을 시도했지만 String 값만 확인합니다. 어떻게 할 수 있습니까?
답변
이 IsDefined
메서드에는 두 개의 매개 변수 가 필요합니다 . 첫 번째 매개 변수는 검사 할 열거 유형입니다 . 이 유형은 일반적으로 typeof 표현식을 사용하여 얻습니다. 두 번째 매개 변수는 기본 개체로 정의됩니다 . 찾을 상수 이름이 포함 된 문자열 또는 정수 값을 지정하는 데 사용됩니다. 반환 값은 값이 존재하면 true이고 존재하지 않으면 false 인 부울입니다.
enum Status
{
OK = 0,
Warning = 64,
Error = 256
}
static void Main(string[] args)
{
bool exists;
// Testing for Integer Values
exists = Enum.IsDefined(typeof(Status), 0); // exists = true
exists = Enum.IsDefined(typeof(Status), 1); // exists = false
// Testing for Constant Names
exists = Enum.IsDefined(typeof(Status), "OK"); // exists = true
exists = Enum.IsDefined(typeof(Status), "NotOK"); // exists = false
}
답변
이 시도:
IEnumerable<int> values = Enum.GetValues(typeof(PromotionTypes))
.OfType<PromotionTypes>()
.Select(s => (int)s);
if(values.Contains(yournumber))
{
//...
}
답변
당신은 사용해야합니다 Enum.IsDefined
.
Enum.IsDefine을 시도했지만 String 값만 확인합니다.
적어도 내 컴퓨터에서 문자열 값과 int (기본) 값을 모두 확인할 것이라고 100 % 확신합니다.
답변
문자열 값의 열거 형을 확인하고 사용하고 싶을 수도 있습니다.
string strType;
if(Enum.TryParse(strType, out MyEnum myEnum))
{
// use myEnum
}