Fare questo come ovvio per tutti i casi in cui una variabile viene impostata su null sembra sciocca, poiché sono certo che non ha assolutamente alcuno scopo il 99,9% delle volte. Dopo che il codice è stato eseguito, lo stato della variabile sarà identico in entrambi gli scenari. Potrebbe esserci una differenza sotto il sub-nanosecondo se è necessario eseguire questo un miliardo di volte, poiché le letture della CPU sono più veloci delle scritture (senza alcuna memorizzazione nella cache, previsione delle branch o operazioni di riordino del tutto, le scritture sono due volte più lente, ma questo non significa che finiranno con il doppio del rallentamento una volta aggiunti tutti quei meccanismi, anche la maggiore dimensione della base di codice e il working set potrebbero compensare eventuali guadagni). Ma non c'è alcuna differenza funzionale.
È concepibile che potrebbe essere una differenza funzionale in rari casi di eccezione, ad es. se la variabile è contrassegnata volatile . In questo caso, il controllo Null creerà una barriera di memoria di lettura e salterà l'impostazione di una barriera di memoria di scrittura se è già nullo. Non riesco a immaginare nessuno scopo legittimo, ma è possibile che qualche enigmatico abbia trovato una differenza molto sottile in alcuni comportamenti di basso livello, ad es. il controllo nullo può impedire a un set nullo ridondante di interferire con la coda di scrittura della CPU, risolvendo problemi oscuri di cui non ho mai sentito parlare.
Sono una specie di spitballing qui, ma ho pensato che potreste essere interessati a questa possibilità molto stretta. Di sicuro non ho mai verificato nulla prima di averlo impostato, né qualcuno che conosco, né alcun esempio in alcun articolo della Knowledge Base che abbia mai letto.
Un altro motivo interessante che un commentatore ha notato è che potrebbe essere utile essere in grado di impostare un punto di interruzione che si attiva solo quando viene rilasciato il riferimento. Se segui lo schema e inserisci un punto di interruzione nel compito, funzionerà in questo modo.
Il mio pensiero finale è forse è un residuo dei giorni in cui facevamo riferimento al conteggio quando rilasciavamo gli oggetti. Con GC, ovviamente, tutti questi modelli non sono aggiornati ora.
Forse non si avvicina a questo come a un dibattito ma a un'opportunità di apprendimento. Chiedi loro perché lo fanno. Sono davvero curioso di cosa diranno.