枚举定义中的波浪号(〜)是什么?我一直感到很惊讶,即使在这段时间里一直使用C#之后,我仍然设法找到了我不知道的东西...我已经尝试过在互联网上搜索此内容,但是在搜索中使用“〜”对我来说效果不佳,我也没有在MSDN上找到任何内容(并不是说它不存在)我最近看到了这段代码,波浪号(〜)是什么意思?/// <summary>/// Enumerates the ways a customer may purchase goods./// </summary>[Flags]public enum PurchaseMethod{ All = ~0, None = 0, Cash = 1, Check = 2, CreditCard = 4}看到它令我有些惊讶,所以我尝试对其进行编译,并且它起作用了……但是我仍然不知道它的含义/作用。有帮助吗?
4 回答
慕桂英4014372
TA贡献1871条经验 获得超13个赞
我认为:
[Flags]
public enum PurchaseMethod
{
None = 0,
Cash = 1,
Check = 2,
CreditCard = 4,
All = Cash | Check | CreditCard
}
会更加清楚。
江户川乱折腾
TA贡献1851条经验 获得超5个赞
public enum PurchaseMethod
{
All = ~0, // all bits of All are 1. the ~ operator just inverts bits
None = 0,
Cash = 1,
Check = 2,
CreditCard = 4
}
由于C#中有两个补码~0 == -1,因此二进制表示中所有位均为1的数字。
MMTTMM
TA贡献1869条经验 获得超4个赞
它比
All = Cash | Check | CreditCard
解决方案,因为如果以后添加另一种方法,请说:
PayPal = 8 ,
您将已经使用tilde-All完成了所有操作,但必须更改其他所有行。因此,以后不太容易出错。
- 4 回答
- 0 关注
- 451 浏览
添加回答
举报
0/150
提交
取消