3
열거 형을 사용하여 비트 마스크를 요일 목록으로 변환하는 메서드가 있습니다. 나는 그 반대로 노력하고 있지만 문제가 있습니다. DaysOfWeekToEnum
이 작동하지만, DaysOfWeekFromEnum
은 작동하지 않습니다. 아래는 내가하려는 일입니다. 누구든지 도와 줄 수 있습니까?요일을 비트 마스크로 변환하는 방법?
public static short DaysOfWeekFromEnum(IEnumerable<DaysInWeekIds> daysOfWeek)
{
short mask;
foreach (var item in daysOfWeek)
{
mask &= item; // ????
}
return mask
}
public static IEnumerable<DaysInWeekIds> DaysOfWeekToEnum(short mask)
{
var values = new List<DaysInWeekIds>();
foreach (short enumValue in Enum.GetValues(typeof(DaysInWeekIds)))
{
if (mask & enumValue == enumValue)
{
values.Add((DaysInWeekIds) Enum.ToObject(typeof(DaysInWeekIds),
enumValue));
}
}
return values;
}
/// <summary> The days in week ids. </summary>
public enum DaysInWeekIds : short
{
M = 1,
Tu = 2,
W = 4,
Th = 8,
F = 16,
Sa = 32,
Su = 64
}
.NET 버전에 따라'.ToArray()'가 필요하지 않을 수도 있습니다. –
@TimS. 사실입니다. 모노를 실행하는 ideone에서 컴파일되도록 ToArray()를 추가했습니다. – dasblinkenlight