在枚举之前"〜"是什么意思

CMa*_*ker 5 c# syntax enums

今天我看到这段代码:

ViewBag.country = from p in CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures)
                              select new SelectListItem
                              {
                                  Text = p.EnglishName,
                                  Value = p.DisplayName
                              };
Run Code Online (Sandbox Code Playgroud)

我无法理解."〜" - 这是一个错误?据我记忆,"〜"放在析构函数之前.但这是枚举.这段代码编译完毕!

Mar*_*zek 6

它是按位否定运算符.

〜运算符(C#参考)

~操作者对其运算数执行,其具有反转每个比特的效果的按位求补操作.按位求补运算符预定义的int,uint,long,和ulong.

并且因为枚举上通常允许对整数类型进行操作,所以可以使用~上面列出的类型支持的枚举.

  • 对于使用`FlagsAttribute`标记的枚举非常有用(与其他按位运算符一样). (4认同)