[英]What are true and false operators in C#?
如果要定義專門的布爾值,則會重載true
或false
運算符。 然而,這通常不是必需的,這就是為什么它們看起來沒用。 例如,在模糊邏輯布爾類中,您可能具有以下內容:
// 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
(反之亦然)。
當然,還有true
和false
文字 ,你可以分配給布爾實例的兩個文字值。 不要將這些與上面提到的操作員混淆。 你會如何使用這一點,涉及布爾數據庫中的一個較大幅度的例子,在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#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.