关于C#枚举的用法

zw880322 2011-08-10 05:36:45

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()返回的值总是一样呢?
...全文
277 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
老毕 2011-08-10
  • 打赏
  • 举报
回复
jcTime.DayOfWeek & dw) !=0

上面这样2个DayOfWeek的枚举,做位的“与”运算,没有意义啊,不会得到0或者非0的结果。
honkerhero 2011-08-10
  • 打赏
  • 举报
回复
传个dw数组进来, 使用 数组.indexof(jctime.dayofweek) > -1 , 或者传List进来,使用contains方法
zw880322 2011-08-10
  • 打赏
  • 举报
回复

没有简单一点的方法么?
[Quote=引用 9 楼 honkerhero 的回复:]
[SerializableAttribute]
[ComVisibleAttribute(true)]
public enum DayOfWeek
显然没有Flag标记, 这不能用 二进制的与和或,只能一个个判断
[/Quote]
zw880322 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 honkerhero 的回复:]
dayofweek这个枚举上没有[Flag]标记吧, 在枚举上使用&运算符只有在标有flag的枚举上,或者指定枚举值为2的次方的时候才有意义

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

那我要怎么做才能达到&的效果
honkerhero 2011-08-10
  • 打赏
  • 举报
回复
[SerializableAttribute]
[ComVisibleAttribute(true)]
public enum DayOfWeek
显然没有Flag标记, 这不能用 二进制的与和或,只能一个个判断
zw880322 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ustbwuyi 的回复:]
非常奇怪,都不调试的?

你自己调试一下就明白了,其实都走的
if ((jcTime.DayOfWeek & dw) != 0)
{
return jcTime;
}
这个条件,返回值显然都一样的。
[/Quote]
我知道走的一直是这里,问题是我的预想是比如今天是星期3,m_gameType=1的时候,应该要进入循环取值,现在我是不清楚为啥不能一直在if这里就进入了
honkerhero 2011-08-10
  • 打赏
  • 举报
回复
dayofweek这个枚举上没有[Flag]标记吧, 在枚举上使用&运算符只有在标有flag的枚举上,或者指定枚举值为2的次方的时候才有意义

dayofweek的值好像是1-7吧,这个&运算符没有道理啊
ustbwuyi 2011-08-10
  • 打赏
  • 举报
回复
都会调试的话子夜要少挣多少分啊
threenewbee 2011-08-10
  • 打赏
  • 举报
回复
单步调试下。
MSDNXGH 2011-08-10
  • 打赏
  • 举报
回复
断点,调试,看看它的执行顺序,就知道那里错了
ustbwuyi 2011-08-10
  • 打赏
  • 举报
回复
非常奇怪,都不调试的?

你自己调试一下就明白了,其实都走的
if ((jcTime.DayOfWeek & dw) != 0)
{
return jcTime;
}
这个条件,返回值显然都一样的。
q107770540 2011-08-10
  • 打赏
  • 举报
回复
单上调试
子夜__ 2011-08-10
  • 打赏
  • 举报
回复
m_GameType 这个在哪定义的

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧