为了账号安全,请及时绑定邮箱和手机立即绑定

枚举定义中的波浪号(〜)是什么?

枚举定义中的波浪号(〜)是什么?

C#
扬帆大鱼 2019-12-16 10:54:00
枚举定义中的波浪号(〜)是什么?我一直感到很惊讶,即使在这段时间里一直使用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

 }

会更加清楚。


查看完整回答
反对 回复 2019-12-16
?
江户川乱折腾

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的数字。


查看完整回答
反对 回复 2019-12-16
?
MMTTMM

TA贡献1869条经验 获得超4个赞

它比


All = Cash | Check | CreditCard

解决方案,因为如果以后添加另一种方法,请说:


PayPal = 8 ,

您将已经使用tilde-All完成了所有操作,但必须更改其他所有行。因此,以后不太容易出错。


查看完整回答
反对 回复 2019-12-16
  • 4 回答
  • 0 关注
  • 424 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信