0

可能重复:
函数名称前的波浪号在 C# 中是什么意思?
枚举定义中的波浪号 (~) 是什么?

我知道“~”是用于 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;

}
4

1 回答 1

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 都不是零。

于 2012-12-12T20:49:22.347 回答