Es scheint mir, dass ein Großteil meiner Debugging-Zeit darauf verwendet wird, Null-Referenz-Ausnahmen in komplexen Anweisungen zu verfolgen. Zum Beispiel:Warum kann eine Nullreferenzausnahme das Objekt, das eine Nullreferenz hat, nicht benennen?
For Each game As IHomeGame in _GamesToOpen.GetIterator()
Warum, wenn ich eine Nullreferenceexception bekommen, kann ich die Zeilennummer in der Stack-Trace, aber nicht der Name des Objekts, das null entspricht. Mit anderen Worten, warum:
Object reference not set to an instance of an object.
statt
_GamesToOpen is not set to an instance of an object.
oder
Anonymous object returned by _GamesToOpen.GetIterator() is null.
oder
game was set to null.
Ist das eine reine Designwahl, bedeutete die Anonymität zu schützen des Codes oder gibt es eine comp Elling Grund im Compiler-Design, diese Informationen nicht in die Debug-Time-Ausnahme aufzunehmen?
Zeilennummern sind auch eine Laufzeit-Sache. Die Debug-Zeit-Kompilierung enthält alle Arten von Kompilierungszeiten (Klassen- und Methodennamen, Zeilennummern usw.). Warum nicht Variablennamen? –
Klassen, Methoden und Parameternamen existieren tatsächlich auf der IL-Ebene. Aber Variablen sind in der generierten IL so gut wie verschwunden. Grundsätzlich gibt es keine spezifische Möglichkeit, eine Ausnahme auf eine bestimmte Variable zu beziehen: Angenommen "if (a
Akzeptiert wegen des obigen Kommentars. –