私は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);
}
私が知る限り、違いは、trueとfalseを別々に定義することにより、trueとfalseの両方、またはtrueとfalseのどちらでもないオブジェクトを持つことができるということです。
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に変換できるようにする場合は、単一のブール演算子が最も理にかなっています。
誰かが私にそれを他の方法で行うことが理にかなっているシナリオを与えることができますか?
ありがとう