"~Method" 是什么意思?

3
我今天看到了一些代码,它读取了一些数据。
public class SomeClass
{
      int DEFAULT_INT = 5;

      public static int SomeMethod()
      {
           return ~FooBar(DEFAULT_INT);
      }

      public static int SomeMethod(int i)
      {
           return ~FooBar(i);
      }

      public static int FooBar(i)
      {
          ......
      }
}

我以前没有见过这个,据我所知它是一个合法的名称 ~FooBar。有人知道这个“~”是否有特殊作用吗?

抱歉,我从原帖中调整了代码。我误读了FooBar方法。


你确定这是一个静态方法吗?因为你可以实现析构函数。http://msdn.microsoft.com/en-us/library/66x5fx1b(v=vs.110).aspx - Brian
2个回答

8

4
你是在说这个上下文中 public static int ~FooBar() {...} 中使用了按位补码运算符 ~ 吗? - hatchet - done with SOverflow
2
如果这是一个运算符重载,那么它不应该声明为 static int operator~(ClassX a, ClassX b) 吗? - Brian
@hatchet 不,我不知道这是什么。我从未在静态方法声明中看到过 ~。我认为它根本无法编译。 - Dmitry
1
看起来 OP 刚刚修改了代码。~ 运算符不再在方法声明中。 - B.K.
抱歉,我打错了方法,我看到了没有字符的地方,哈哈。我已经调整了原帖。 - Buckrogerz
显示剩余3条评论

2

如上所述,它是一种按位运算符,可以反转每个位。

FooBar方法返回一个int。在幕后,它返回32位,看起来像这样:

1110000001100..... // 32个字符。
对该int执行~将返回0001111110011.....

另一个例子:

~(101) = 010
~(000) = 111

+1 以确认,但“它返回32个字节” 字节?真的吗? - Dmitry
我指的是位,尽管我写错了“字节”,但很容易理解。 - Amir Popovich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接