代字号在C#中做了什么?

时间:2012-12-12 20:47:40

标签: c#

  

可能重复:
  What does the tilde before a function name mean in C#?
  What is the tilde (~) in the enum definition?

我知道“〜”用于Finalzier方法,但现在我看到了一些像这样的C#代码:

if (~IsFieldDeleted(oRptField.GetLayoutField()) != 0)
{
   oCollection.Add(oRptField, oRptField.ObjectKeyString);
   // some more stuff
}

注意第一行中的“〜”?

然后如果我去实现IsFieldDeleted它是一个返回int的方法。

private int IsFieldDeleted(LayoutLib.LayoutField oLayoutField)
{
    Collection oColl = GetFieldIdsForField(oLayoutField);

    return (oColl.Count == 0) ? 1 : 0;

}

1 个答案:

答案 0 :(得分:2)

~运算符执行按位补码。

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/bitwise-complement-operator

IsFieldDeleted()返回 int ,这是一个可以应用该运算符的类型(int,uint,long,ulong)。采用按位补码,然后将其与零进行比较。

我没有看到if(...)如何成为真,因为IsFieldDeleted()只返回0或1而且〜0和〜1都不为零。