尝试转换TextBox内容时出现异常

时间:2015-07-10 05:28:55

标签: c# type-conversion

可以写下列条件吗?

if (textbox.text != null)

因为当我在程序中写下这个条件时,会引发异常。

如果textbox的数据类型为string,那么它也可以为空?

3 个答案:

答案 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;
}