簡體   English   中英

C#中的真假運算符是什么?

[英]What are true and false operators in C#?

什么是的目的和效果truefalse在C# 運營商 關於這些的官方文件是絕對無法解釋的。

如果要定義專門的布爾值,則會重載truefalse運算符。 然而,這通常不是必需的,這就是為什么它們看起來沒用。 例如,在模糊邏輯布爾類中,您可能具有以下內容:

// Represents a boolean that can store truth values in a range from [0, 1], with
//   a value of one indicating complete metaphysical certitude and a value of
//   zero indicating complete impossibility.
public class FuzzyBoolean {
// ...
   public static bool operator true(FuzzyBoolean fb) {
      return fb.TruthValue > 0;
   }

   public static bool operator false(FuzzyBoolean fb) {
      return fb.TruthValue == 0;
   }
// ...
}

請注意,如果重載為true ,則還必須重載false (反之亦然)。

當然,還有truefalse 文字 ,你可以分配給布爾實例的兩個文字值。 不要將這些與上面提到的操作員混淆。 你會如何使用這一點,涉及布爾數據庫中的一個較大幅度的例子,在MSDN文檔中給出這里

可以重載true和false運算符,以允許類將其自己的狀態表示為true或false,例如:

public class MyClass
{
    //...
    public static bool operator true(MyClass op)
    {
        // Evaluation code...
    }

    public static bool operator false(MyClass op)
    {
        // Evaluation code...
    }
}

並且您將能夠在布爾表達式中使用運算符:

MyClass test = new MyClass(4, 3);
if (test)
    Console.WriteLine("Something true");
else
    Console.WriteLine("Something false");

string text = test ? "Returned true" : "Returned false";

請參閱文章中引用的示例

C#語言規范 - 數據庫布爾類型

本質上,這些運算符允許在布爾條件邏輯中使用類型的實例,例如&&||

在C#2.0之前,使用true和false運算符創建與SqlBool等類型兼容的用戶定義的可空值類型。 但是,該語言現在提供對可空值類型的內置支持,並且只要有可能,您應該使用它們而不是重載true和false運算符。 有關更多信息。使用可空的布爾值,表達式a!= b不一定等於!(a == b),因為其中一個或兩個值可能為空。 您需要分別重載true和false運算符,以正確識別表達式中的空值。 以下示例顯示如何重載和使用true和false運算符。

它們允許您使用運算符重載語法重載它們,以便您定義的類型可以解釋為布爾值。

允許您使用自定義類型作為邏輯運算的一部分; 例如,作為if或while語句的一部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM