C#中运营商true
和false
运营商的目的和效果是什么?关于这些的官方文件是绝对无法解释的.
如果要定义专门的布尔值,则会重载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";