尝试转换TextBox内容时出现异常
问题描述:
可以编写以下条件吗?尝试转换TextBox内容时出现异常
if (textbox.text != null)
因为当我在我的程序已经写了这个条件,它抛出一个异常。
如果textbox
的数据类型是string
那么它也是可以为空的?
答
如果textbox
变量本身实际上为null,则特定行代码应该导致错误的唯一原因是。什么是确切的例外?
另外一个方便的提示:如果你想检查一个空的文本框我推荐String.IsNullOrWhitespace(textbox.text)
这将返回一个布尔值。这对if这样的陈述来说很好。
答
根据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;
}
如果'textbox'本身为null,则该行只会引发异常。但你没有提到什么例外。那么,你的问题是什么?你有什么异常? – nvoigt
你得到了什么异常?你使用Windows.Form TextBox或其他东西? –
如果您键入它,那么我认为有编译时错误。它必须是“textbox.Text”。其次,你应该总是检查是否(!string.IsNullOrEmpty(textbox.Text))。 –