日期:2014-05-17  浏览次数:20448 次

关于C#枚举的用法
C# code

private DateTime GetDate(DayOfWeek dw, DateTime jcTime)
    {
        if ((jcTime.DayOfWeek & dw) != 0)
        {
            return jcTime;
        }
        for (int i = 1; i < 7; i++)
        {
            DateTime time = jcTime.AddDays(i);
            if ((time.DayOfWeek & dw) != 0)
            {
                return time;
            }
        }
        return jcTime;
    }

 protected void Page_Load(object sender, EventArgs e)
    {

        DateTime today = DateTime.Now;
        DayOfWeek dw;
        switch (m_GameType)
        {

            case 1://双色球
                dw = DayOfWeek.Tuesday | DayOfWeek.Thursday | DayOfWeek.Sunday;
                timeStr = ConvertToString(GetKJDate(dw, DateTime.Now)) + " 19:30:00";
                break;
            case 2://七乐彩
                dw = DayOfWeek.Monday | DayOfWeek.Wednesday | DayOfWeek.Friday;
                timeStr = ConvertToString(GetKJDate(dw, DateTime.Now)) + " 19:30:00";
                break;
            case 3://3D
                timeStr = ConvertToString(today) + " 19:30:00";
                break;
        }
     }


为什么我使用的时候GetDate()返回的值总是一样呢?

------解决方案--------------------
dayofweek这个枚举上没有[Flag]标记吧, 在枚举上使用&运算符只有在标有flag的枚举上,或者指定枚举值为2的次方的时候才有意义

dayofweek的值好像是1-7吧,这个&运算符没有道理啊