Warum überlast true und false anstelle der Definition der bool-operator?

Ich ve wurde Lesen über überlastung true und false in C#, und ich glaube, ich verstehe den grundlegenden Unterschied zwischen dieser und definieren einer bool-operator. Das Beispiel sehe ich etwa so etwas wie:

public static bool operator true(Foo foo) {
  return (foo.PropA > 0);
}
public static bool operator false(Foo foo) {
  return (foo.PropA <= 0);
}

Mir, das ist das gleiche wie zu sagen:

public static implicit operator bool(Foo foo) {
  return (foo.PropA > 0);
}

Den Unterschied, soweit ich sagen kann, ist, dass durch die Definition von wahr und falsch getrennt, können Sie ein Objekt haben, das ist zugleich richtig und falsch oder weder wahr noch falsch:

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; }

Ich bin sicher, es gibt einen Grund, warum das erlaubt ist, aber ich kann einfach nicht denken, was es ist. Zu mir, wenn Sie möchten, dass ein Objekt konvertiert werden kann, um wahr oder falsch, ein einzelnes bool operator am meisten Sinn macht.

Kann mir jemand ein Szenario wo es Sinn macht, es zu tun die andere Weise?

Dank

  • Ich habe gerade gefunden diese Operatoren als gut und hat einige tests. Es scheint, wie if verwendet nur die true Betreiber, und if (!myObj) ist gar nicht möglich, so gibt es keinen Punkt (noch) in der Umsetzung einer widersprüchlichen false Betreiber. Hab ich was verpasst? Wie kann ich die false operator überhaupt?
InformationsquelleAutor Joe Enos | 2010-04-19
Schreibe einen Kommentar