Stiamo avviando un sistema e talvolta riceviamo la famosa eccezione NullReferenceException
con il messaggio Object reference not set to an instance of an object
.
Tuttavia, in un metodo in cui abbiamo quasi 20 oggetti, con un registro che dice che un oggetto è nullo, non è affatto utile. È come dirti, quando sei l'agente di sicurezza di un seminario, che un uomo tra i 100 partecipanti è un terrorista. Non ti è affatto utile. Dovresti ottenere maggiori informazioni, se vuoi scoprire quale uomo è l'uomo minaccioso.
Allo stesso modo, se vogliamo rimuovere il bug, dobbiamo sapere quale oggetto è nullo.
Ora, qualcosa ha ossessionato la mia mente per diversi mesi, e cioè:
Perché .NET non ci fornisce il nome o almeno il tipo di riferimento all'oggetto, che è null? . Non capisce il tipo dalla riflessione o da qualsiasi altra fonte?
Inoltre, quali sono le migliori pratiche per capire quale oggetto è nullo? Dovremmo sempre testare la nullità degli oggetti in questi contesti manualmente e registrare il risultato? Esiste un modo migliore?
Aggiornamento:
l'eccezione The system cannot find the file specified
ha la stessa natura. Non è possibile trovare quale file fino a quando non si allega al processo e al debug. Immagino che questi tipi di eccezioni possano diventare più intelligenti. Non sarebbe meglio se .NET potesse dirci c:\temp.txt doesn't exist.
invece di quel messaggio generale? Come sviluppatore, voto sì.
new
per creare istanze di una classe. Quando un tale suggerimento aiuta davvero?