可以写下列条件吗?
if (textbox.text != null)
因为当我在程序中写下这个条件时,会引发异常。
如果textbox
的数据类型为string
,那么它也可以为空?
答案 0 :(得分:0)
特定代码行应该导致错误的唯一原因是textbox
变量本身实际上是否为空。什么是确切的例外?
另外一个方便的提示:如果你想检查一个空的文本框,我建议String.IsNullOrWhitespace(textbox.text)
将返回一个bool。这对于if这样的陈述来说非常棒。
答案 1 :(得分:0)
基于主要帖子中OP的评论,以及他的另一条评论说明例外情况"输入字符串的格式不正确",看起来它不是上面抛出异常的代码行(尽管它应该是.Text
而不是.text
)。
相反,此FormatException
表示Convert.ToDouble(textbox.Text)
可能无法将textbox
的内容转换为double
。您确定输入了正确的double
值吗?此问题也可能与您的文化设置有关。
答案 2 :(得分:0)
"if (textbox.Text != null)"
因为当我在我的程序中写下这个条件时,它会抛出一个 异常。
如果textbox的数据类型是字符串,那么它也可以为空?
是。 textbox只是一个变量,它包含对类实例的引用,因此它的默认值为null;您应该小心访问.Text属性,因为如果textbox值设置为null,您将具有NullReferenceException。
所以我做这样的事情(假设它的方法或事件处理程序):
void MyMethod()
{
if(textbox == null) return;
if(String.IsNullOrWhiteSpace(textbox.Text)) return;
// your code here if textbox.Text has valid value
}
P.S。如果您将此字符串转换为Double它的不同故事:
double GetDouble()
{
if(textbox == null) throw new NullReferenceException("textbox is null");
if(String.IsNullOrWhiteSpace(textbox.Text)) throw new ArgumentException("textbox.Text contains null or white spaces");
double result = 0;
if(!Double.TryParse(textbox.Text, out result)) throw new ArgumentException("textbox.Text has invalid number");
return result;
}