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) です。ビットごとの補数が取られ、ゼロと比較されます。

0 または 1 のみが返され、~0 と ~1 は両方ともゼロではないif(...)ため、どのように真になることができるのかわかりません。IsFieldDeleted()

于 2012-12-12T20:49:22.347 に答える