我一直在阅读有关在 C# 中重载 true 和 false 的内容,我想我理解这与定义 bool 运算符之间的基本区别。我看到的例子是这样的:
public static bool operator true(Foo foo) {
return (foo.PropA > 0);
}
public static bool operator false(Foo foo) {
return (foo.PropA <= 0);
}
对我来说,这与说:
public static implicit operator bool(Foo foo) {
return (foo.PropA > 0);
}
据我所知,区别在于,通过分别定义真假,您可以拥有一个既是真又是假的对象,或者既不是真也不是假的对象:
public static bool operator true(Foo foo) { return true; }
public static bool operator false(Foo foo) { return true; }
//or
public static bool operator true(Foo foo) { return false; }
public static bool operator false(Foo foo) { return false; }
我敢肯定这是允许的,但我就是想不出它是什么。对我来说,如果您希望一个对象能够被转换为 true 或 false,那么单个 bool 运算符最有意义。
谁能给我一个以另一种方式做有意义的场景?
谢谢