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()返回的值总是一样呢?

解决方案 »

  1.   

    非常奇怪,都不调试的?你自己调试一下就明白了,其实都走的
    if ((jcTime.DayOfWeek & dw) != 0)
            {
                return jcTime;
            }
    这个条件,返回值显然都一样的。
      

  2.   

    dayofweek这个枚举上没有[Flag]标记吧,  在枚举上使用&运算符只有在标有flag的枚举上,或者指定枚举值为2的次方的时候才有意义dayofweek的值好像是1-7吧,这个&运算符没有道理啊
      

  3.   

    我知道走的一直是这里,问题是我的预想是比如今天是星期3,m_gameType=1的时候,应该要进入循环取值,现在我是不清楚为啥不能一直在if这里就进入了
      

  4.   

    [SerializableAttribute] 
    [ComVisibleAttribute(true)] 
    public enum DayOfWeek
    显然没有Flag标记, 这不能用 二进制的与和或,只能一个个判断
      

  5.   


    那我要怎么做才能达到&的效果
      

  6.   

    传个dw数组进来, 使用 数组.indexof(jctime.dayofweek) > -1 , 或者传List进来,使用contains方法
      

  7.   

    jcTime.DayOfWeek & dw) !=0上面这样2个DayOfWeek的枚举,做位的“与”运算,没有意义啊,不会得到0或者非0的结果。