這個方法是一個在aspx GridView控件中的OnRowCommand
的事件處理程序。 Resharper警告說,gvUnits
,gvUnit.DataKeys
和gvUnits.DataKeys[index]
可能爲空,並建議在第2條if語句中添加檢查。一旦添加,它會創建一個額外的警告,gvUnits.DataKeys != null
始終爲真。既沒有按照它的建議來添加這些檢查,也沒有手動添加斷言來抑制警告。爲什麼resharper仍然給這個代碼的空引用警告
我不明白這是怎麼回事:是gvUnits易變,如果是這樣,爲什麼,它是一個在resharper 5.1中的bug,還是其他的事情呢?
protected void GvUnitsRowCommand(object sender, System.Web.UI.WebControls.GridViewCommandEventArgs e)
{
if (e.CommandName == "EditUnit")
{
int index = int.Parse(e.CommandArgument.ToString());
if (gvUnits != null && gvUnits.DataKeys != null && gvUnits.DataKeys.Count > index)
{
Debug.Assert(gvUnits != null);
Debug.Assert(gvUnits.DataKeys != null);
Debug.Assert(gvUnits.DataKeys[index] != null);
int unitID = (int)gvUnits.DataKeys[index].Value;
//do stuff with unitID
}
}
}
我檢查並且DataKeys是通過索引器方法訪問的屬性。現在有道理; resharper可能有點聰明,不建議生成一個不起作用的'修復'(在這裏是v6更好嗎?)。 –