我总是感到惊讶的是,即使在使用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
}
我看到它有点惊讶,所以我试着编译它,它起作用了…但我还是不知道这是什么意思。有什么帮助吗??
发布于 2008-12-22 21:38:17
~是一元的补码运算符--它翻转其操作数的位。
~0 = 0xFFFFFFFF = -1
在二进制补码运算中,~x == -x-1
~运算符可以在几乎任何借鉴了C语言语法的语言中找到,包括Objective-C/C++/C#/Java/Javascript。
发布于 2008-12-22 21:43:00
我是这么想的:
[Flags]
public enum PurchaseMethod
{
None = 0,
Cash = 1,
Check = 2,
CreditCard = 4,
All = Cash | Check | CreditCard
}
会更清楚一点。
发布于 2008-12-22 21:37:43
public enum PurchaseMethod
{
All = ~0, // all bits of All are 1. the ~ operator just inverts bits
None = 0,
Cash = 1,
Check = 2,
CreditCard = 4
}
由于二进制表示法中的二进制表示法中所有位都是1的数字,在C#中有两个补码。参阅~0 == -1
。
https://stackoverflow.com/questions/387424
复制相似问题