Oltre ad entrare in qualche versione beta di .NET ... che, seppur eccitante, è rischiosa e non risponde alla tua domanda.
Per ora purtroppo la cosa migliore che puoi fare è aggiungere commenti Intellisense al tuo codice che avvisa di non passare null.
/// <summary>
/// This Foo method does Bar to something.
/// </summary>
/// <param name="myRequiredString">required, do NOT pass nulls. I really really mean it!</param>
public void Foo(String myRequiredString)
{
if (myRequiredString == null)
{
throw new ArgumentNullException("myRequiredString", "It said required in the name of the argument, dummy!");
}
}
ci sono alcune hackish solutions là fuori dove le persone hanno messo in atto una struct nonnullable generica, ma la linea di fondo è quello che vuoi è per Visual Studio non lasciare che si digita "Foo (null)" e per mettere in guardia se lo fai o ti dai qualche errore del compilatore, e il fatto è che per il 99,99% delle chiamate di metodo dove qualcosa non dovrebbe essere annullabile, dovrai fare il == controllo nullo e lanciare comunque una ArgumentNullException, perché tu non so che l'argomento è nullo fino al runtime. Anche se ci fosse quello che stai cercando in C# almeno il compilatore dovrà aggiungere il controllo null e lanciare ArgumentNullException.
Credo che sto dicendo che quello che stai cercando è "zucchero sintattico" per salvare le tue dita un po 'di movimento. Per ora, se sei stufo di digitare, ti consiglio di creare uno snippet di codice.
fonte
2009-07-17 14:27:04
Questo è anche implementato in C# 4.0, in Visual Studio 2010 beta 1. –
In che modo DBC è diverso dal verificare nel metodo se l'argomento è nullo o meno e lanciare un ArgumentNullException f.i. quando l'argomento è nullo? –
Funzionalmente, non è davvero.Sintatticamente, tuttavia, rende chiara l'intenzione dall'interfaccia esterna del metodo decorandolo con un attributo appropriato. –