Mi sembra che gran parte del mio tempo di debug sia dedicato all'inseguimento di eccezioni di riferimento null in istruzioni complesse. Per esempio:Perché un'eccezione di riferimento null non può denominare l'oggetto con riferimento null?
For Each game As IHomeGame in _GamesToOpen.GetIterator()
Perché, quando ricevo un NullReferenceException, posso ottenere il numero di riga nella traccia dello stack, ma non il nome dell'oggetto che è uguale a zero. In altre parole, il motivo per cui:
Object reference not set to an instance of an object.
invece di
_GamesToOpen is not set to an instance of an object.
o
Anonymous object returned by _GamesToOpen.GetIterator() is null.
o
game was set to null.
E` strettamente una scelta progettuale, destinate a proteggere l'anonimato del codice o c'è un comp motivo di elling nella progettazione del compilatore per non includere questa informazione nell'eccezione di debug-time?
I numeri di linea sono anche una cosa da runtime. La compilazione debug-time contiene tutti i tipi di cose in fase di compilazione (nomi di classi e metodi, numeri di riga, ecc.) Perché non i nomi delle variabili? –
Classi e metodi e nomi di parametri esistono effettivamente a livello IL. Ma le variabili sono praticamente andate nell'IL generato. Fondamentalmente, non esiste un modo specifico per mettere in relazione un'eccezione con una variabile specifica: Assumi "if (a
Accettato a causa del commento sopra. –