Enum ? 本帖最后由 bdmh 于 2014-01-12 21:52:02 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 注意,前提是有[Flags]这个attribute http://msdn.microsoft.com/zh-cn/library/system.enum.hasflag.aspx位与位或的应用,以前没注意到[Flags]的写法,都是自己手写的位运算判断,学习了;DinnerItems myOrderA = DinnerItems.Appetizer | DinnerItems.Entree | DinnerItems.Beverage | DinnerItems.Dessert=二进制1111 DinnerItems myOrderB = DinnerItems.Appetizer | DinnerItems.Entree=二进制0011bool a = (myOrderA & myOrderB) == myOrderB; // 1111&0011 = 0011bool b = myOrderA.HasFlag(myOrderB);所以HasFlag应该就是进行了的位与运算,用Reflactor看了一下,没找到真正的位运算部分,调用了系统的InternalHasFlag方法实现的,这样应该比自己再写那些位与位或效率更高吧 总结:1 当使用Enum.HasFlag(flag)时应使用了attribute ,否则有可能出现程序功能上的错误。2 当使用Enum.HasFlag(flag),其flag的基础值为零时,则方法将返回 true.3 可以使用 .Equals() 方法测试flag是否与零相等,并只在 flag 的值非零时调用 HasFlag(). C# 读取App.Config 文件 怎样从字符串中提取cookies到cookiecollection中? C# 线程 一个耐人寻味的问题!!! 新手问题 代码问题 希望大家帮忙 关于Socket.BeginSend的最后一个参数 求助!!怎么实现获取U盘路径并感染其目录下得doc文件? 高手不下地狱,谁下地狱?[API在枚举时所需要提供的涵数地址] 重载程序的问题 c#的web编程里关于Calendar的问题(很急) 不会正则表达式,急着用,求会的帮个忙 请问这种代码是用什么工具生成的,有图请进
位与位或的应用,以前没注意到[Flags]的写法,都是自己手写的位运算判断,学习了;DinnerItems myOrderA = DinnerItems.Appetizer | DinnerItems.Entree | DinnerItems.Beverage | DinnerItems.Dessert=二进制1111
DinnerItems myOrderB = DinnerItems.Appetizer | DinnerItems.Entree=二进制0011
bool a = (myOrderA & myOrderB) == myOrderB; // 1111&0011 = 0011
bool b = myOrderA.HasFlag(myOrderB);
所以HasFlag应该就是进行了的位与运算,用Reflactor看了一下,没找到真正的位运算部分,调用了系统的InternalHasFlag方法实现的,这样应该比自己再写那些位与位或效率更高吧
1 当使用Enum.HasFlag(flag)时应使用了attribute ,否则有可能出现程序功能上的错误。
2 当使用Enum.HasFlag(flag),其flag的基础值为零时,则方法将返回 true.
3 可以使用 .Equals() 方法测试flag是否与零相等,并只在 flag 的值非零时调用 HasFlag().