C# 对象引用未设置为对象的实例。就地支架
我发现了这个错误C# 对象引用未设置为对象的实例。就地支架,c#,asp.net,gridview,C#,Asp.net,Gridview,我发现了这个错误 ph = (PlaceHolder)row.FindControl("phs"); ASP.Net代码: <PagerTemplate> <table> <tr> <td><asp:PlaceHolder ID="phs" runat="server"></asp:PlaceHolder></td> </tr> </table&g
ph = (PlaceHolder)row.FindControl("phs");
ASP.Net代码:
<PagerTemplate>
<table>
<tr>
<td><asp:PlaceHolder ID="phs" runat="server"></asp:PlaceHolder></td>
</tr>
</table>
</PagerTemplate>
如果此行引发异常:
ph = (PlaceHolder)row.FindControl("phs");
。。。然后这表明行
为空。如果它不是null,那么即使方法调用返回null,它也不应该抛出异常。您可以毫无问题地强制转换空引用1
因此,确定行
是否可能以某种方式为空,或者修复代码,使其不能为空,或者在使用它之前检查它是否为空
请注意,我可以想出三个模糊的选择:
实际上可能引用了row.FindRow
中作为委托的字段或属性,但该委托为空row
可能返回null,强制转换表达式可能正在执行某个用户定义的强制转换,该强制转换正在引发异常row.FindRow
- 赋值可以是引发异常的属性设置程序调用
请注意,只有第一种情况才是抛出异常的那一行——我认为这是极不可能的。plz发布您的整个代码,行或行。FindControl(“phs”)为/返回null。不过,更详细的描述会有所帮助@Piushshukla如果答案有用,你需要接受它。上次你也没有接受我的答案。可能重复@Piushshukla:你怎么做什么?目前,我们不知道
行
来自何处,所以我们不知道它是否为空是合法的。您需要能够自己思考自己的代码。