不是最漂亮的,但是:
public static bool ContainsNullParameters(object[] methodParams)
{
return (from o in methodParams where o == null).Count() > 0;
}
,你可以得到在ContainsNullParameters方法也更有創意:
public static bool ContainsNullParameters(Dictionary<string, object> methodParams, out ArgumentNullException containsNullParameters)
{
var nullParams = from o in methodParams
where o.Value == null
select o;
bool paramsNull = nullParams.Count() > 0;
if (paramsNull)
{
StringBuilder sb = new StringBuilder();
foreach (var param in nullParams)
sb.Append(param.Key + " is null. ");
containsNullParameters = new ArgumentNullException(sb.ToString());
}
else
containsNullParameters = null;
return paramsNull;
}
當然
你可以使用攔截器或反射,但這些很容易遵循/使用很少的開銷
>不幸的是,編譯時沒有任何東西可用。 > ... >我非常高興擁有真正的語言語法和支持非空性 我同意。我也想看到編譯時錯誤被提出。 – AndrewJacksonZA 2009-10-02 12:25:45
@Jon,如果碰巧有一個隱式轉換爲bool定義,「if(arg = null)」是否工作?我承認這看起來很不正當,但它確實編譯了...... – 2011-11-29 06:48:27
@ ThomasS.Trias:是的,在這個令人難以置信的晦澀的邊緣案例中,*與存在拼寫錯誤並且缺少圍繞該代碼的測試相結合,最終會出現問題。到那時我認爲你有更大的問題,但:) – 2011-11-29 06:49:43