Ho letto oggi sui contratti di codice C# 4.0. Sembra che la pratica comune per la convalida di un parametro a un metodo non è nullo è il seguente:Contratti di codice C# - evitando il controllo dei parametri per riferimenti null
Contract.Requires(p != null);
Tuttavia sembra abbastanza ragionevole per me che avrei dovuto fare questo per ogni parametro di ogni metodo di interfaccia nel mio codice. Nella stragrande maggioranza dei casi, i parametri non dovrebbero essere nulli. Mi aspetterei che ci sarebbe una sorta di meccanismo che consente di definire alcuni parametri specifici come "consentiti" come null (analogamente all'annotazione "@Nullable" in Java) e che il framework Contracts garantirà automaticamente che il resto non sia nullo.
Oltre a risparmiare molto tempo su questo "standard di controllo" (oltre a molte "Classi di contratti", poiché semplicemente non ci sono condizioni da verificare tranne che per parametri non nulli), farà anche il codice dei contratti è più pulito e più "orientato alla logica".
La mia domanda è, c'è un modo per farlo, e se no, dove non c'è uno, o forse perché il mio approccio qui è sbagliato?
Sarebbe stato utile, ma non esiste una scorciatoia per farlo perché nessuno ha modificato la specifica della lingua per fornirne una e poi l'ha implementata e rilasciata. Vedi la risposta di Eric Lippert a una domanda simile qui: http://stackoverflow.com/questions/2806894/why-c-sharp-doesnt-implement-indexed-properties –
Puoi usare il frammento di 'crn' per generare automaticamente lo standard per queste istruzioni non nulle, che riducono leggermente la digitazione. –