Bitte beachten Sie den folgenden Code und Kommentare:Inkonsistenz in Division durch Null Verhalten zwischen verschiedenen Werttypen
Console.WriteLine(1/0); // will not compile, error: Division by constant zero
int i = 0;
Console.WriteLine(1/i); // compiles, runs, throws: DivideByZeroException
double d = 0;
Console.WriteLine(1/d); // compiles, runs, results in: Infinity
ich den Compiler aktiv für die Division durch Null konstant und die DivideByZeroException zur Laufzeit, aber die Überprüfung verstehen kann:
Warum sollte ein Double in einer Division-by-NULL-Return-Infinity verwendet werden, anstatt eine Ausnahme zu werfen? Ist das Absicht oder ist es ein Fehler?
Just for Kicks, ich habe dies in VB.NET als auch mit "konsistenten" Ergebnissen:
dim d as double = 0.0
Console.WriteLine(1/d) ' compiles, runs, results in: Infinity
dim i as Integer = 0
Console.WriteLine(1/i) ' compiles, runs, results in: Infinity
Console.WriteLine(1/0) ' compiles, runs, results in: Infinity
EDIT:
auf kekekela des Feedback Basierend lief ich die folgend, die in Folge in der Unendlichkeit:
Console.WriteLine(1/
.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001);
Dieser Test scheint die Idee und eine wörtliche Doppel von 0.0
zu erhärten ist eigentlich ein sehr, sehr kleiner Bruchteil, der Unendlichkeit ergibt ...
Hier ist mein Artikel zu diesem Thema: http://blogs.msdn.com/b/ericlippert/archive/2009/10/15/as-timeless-as-infinity.aspx –
@EricLippert cool! – Jalal