Fuori della parte superiore della mia testa, posso pensare di 4 modi per verificare la presenza di argomenti nulli:Pro/contro di diversi metodi per testare le condizioni preliminari?
Debug.Assert(context != null);
Contract.Assert(context != null);
Contract.Requires(context != null);
if (context == null) throw new ArgumentNullException("context");
ho sempre usato l'ultimo metodo, ma ho appena visto un frammento di codice che ha utilizzato Contract.Requires
, che ho non mi sono familiare Quali sono i vantaggi/svantaggi di ciascun metodo? Ci sono altri modi?
In VS2010 w/ReSharper,
Contract.Assert
mi avverte che l'espressione è sempre vero (come sa, io non sono molto sicuro ... non può essere nullo HttpContext?),Contract.Requires
ottiene sbiadito fuori e mi dice il compilatore non richiamare il metodo (presumo a causa del primo motivo, non potrà mai essere nullo), e- se cambio l'ultimo metodo per
context != null
tutto il codice follo la vela si dissolve e mi dice che il codice è euristicamente irraggiungibile.
Quindi, sembra che gli ultimi 3 metodi abbiano una sorta di intelligenza integrata nel controllore statico VS, e Debug.Assert
è semplicemente stupido.
La domanda non è chiara. Stai davvero provando a usarli tutti in una volta? –
@Matthew: Non sono sicuro di come non sia chiaro ... no, non sto cercando di usarli tutti in una volta. Ho creato uno snippet di codice del genere solo per illustrare i diversi modi in cui è possibile verificare la nullità. – mpen
Questo è quello che ho pensato dal resto della domanda, ma la presentazione della sintassi che hai usato era strana. –