Beispielcode:_double.Equals (_float);
double d = 0;
float f = 0;
// Dump() prints result in LinqPad application
(f == d).Dump(); // 1) true
(d == f).Dump(); // 2) true
(f.Equals(d)).Dump(); // 3) false
(d.Equals(f)).Dump(); // 4) true
1) gibt true zurück, als
2) gleiche erwartet, wie oben
3) falsch - weil wir Equals(object)
verwenden und prüft intern:
public override bool Equals(Object obj) {
if (!(obj is Single)) {
return false;
}
...
4) wahr? Warum?
public override bool Equals(Object obj) {
if (!(obj is Double)) {
return false;
}
Wie float
diese if
Wache passieren kann?
0_0 Noch eine blöde Frage von mir :(Ich habe Cursor über Equals bewegt, und ich schwöre, ich sah Equals (Objekt Obj) in Tool-Tipp in Visual Studio. Vermutung, ich bin zu lange in der Arbeit heute :) – zgnilec
@zgnilec manchmal VS ist nicht so intelligent, wie wir es gerne hätten und das hast du wahrscheinlich gesehen. –