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

问题描述:

可以编写以下条件吗?尝试转换TextBox内容时出现异常

if (textbox.text != null) 

因为当我在我的程序已经写了这个条件,它抛出一个异常。

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

+1

如果'textbox'本身为null,则该行只会引发异常。但你没有提到什么例外。那么,你的问题是什么?你有什么异常? – nvoigt

+0

你得到了什么异常?你使用Windows.Form TextBox或其他东西? –

+0

如果您键入它,那么我认为有编译时错误。它必须是“textbox.Text”。其次,你应该总是检查是否(!string.IsNullOrEmpty(textbox.Text))。 –

如果textbox变量本身实际上为null,则特定行代码应该导致错误的唯一原因是。什么是确切的例外?

另外一个方便的提示:如果你想检查一个空的文本框我推荐String.IsNullOrWhitespace(textbox.text)这将返回一个布尔值。这对if这样的陈述来说很好。

+0

我认为如果你的字符串是“abc pqr”,String.IsNullOrWhitespace将返回true。所以要小心使用它。 string.IsNullOrEmpty将是正确的。 –

+0

我不相信是这样。 – psoshmo

+0

@anupamsharma这里是一个链接解释。 http://*.com/questions/6976597/string-isnulloremptystring-vs-string-isnullorwhitespacestring – psoshmo

根据OP在主要文章中的评论,以及他的其他评论指出异常说“输入字符串格式不正确”,它看起来不是上面的代码行抛出异常(尽管它应正确为.Text而不是.text)。

确切地说,这FormatException表明它可能是Convert.ToDouble(textbox.Text),它无法将textbox的内容转换为double。你确定你输入了正确的double值吗?这个问题也可能与您的文化设置有关。

"if (textbox.Text != null)" 

因为当我在我编写的程序这种情况下,它抛出一个异常 。

如果文本框的数据类型是字符串,那么它也是可以为空的?

是的。 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 
} 

附:如果你将这个字符串转换为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; 
}