这个方法是一个在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更好吗?)。 –