这是一个更好的代码,可以避免将Object引用设置为未设置为对象的实例 什么时候使用Telerik Radtextbox?这两个代码是否相同?我可以设置一个默认值来避免抛出空引用吗?
protected void btnAddSAles_click(object sender, EventArgs e)
{
string orderName = Ordername.Text;
}
或
protected void btnAddSAles_click(object sender, EventArgs e)
{
TextBox b = item.FindControl("Ordername") as TextBox;
string box1 = b.text;
}
答案 0 :(得分:0)
我假设 FindControl
从您尝试制作的null
演员表中返回as
。我假设(再次)它没有找到名为Ordername
的控件,因此您尝试访问Text
对象上的null
属性,这会导致NullReferenceException
。
你应该做的是:
Ordername
的控件,因为我假设应该有一个如果调用Button.Click
的控件可能不始终是TextBox
对象,请添加无效检查:
protected void btnAddSAles_click(object sender, EventArgs e)
{
TextBox b = item.FindControl("Ordername") as TextBox;
if (b != null)
{
string box1 = b.text;
}
}
答案 1 :(得分:0)
两个代码示例不一样。
第一个示例不会抛出该异常,除非您在代码中的某处明确设置了Ordername = null
,我怀疑您这样做了。
第二个样本会抛出,因为您正试图将RadTextBox
投放到TextBox
(我假设,因为您正在询问{{1} }),这导致RadTextBox
为b
。
如果您想避免出现空引用异常的可能性,那么在访问控件上的属性之前,您必须检查null
:
null
这里真正的问题是你正在施放错误的类型。 protected void btnAddSAles_click(object sender, EventArgs e)
{
TextBox b = item.FindControl("Ordername") as TextBox;
if (b != null)
{
// do something with b.Text;
}
}
不是源自原始RadTextBox
控件。您必须转换为TextBox
。
RadTextBox