C# 尝试转换文本框内容时出现异常

C# 尝试转换文本框内容时出现异常,c#,type-conversion,C#,Type Conversion,是否可以写入以下条件 if (textbox.text != null) 因为当我在程序中编写这个条件时,会抛出一个异常。 如果textbox的数据类型是string,那么它也可以为null?特定代码行导致错误的唯一原因是textbox变量本身实际上为null。确切的例外是什么 还有一个方便的提示:如果你想检查一个空文本框,我推荐String.IsNullOrWhitespace(textbox.text),它将返回bool。这对于像这样的if语句很好。根据OP在主要帖子中的评论,以及他在其他

是否可以写入以下条件

if (textbox.text != null)
因为当我在程序中编写这个条件时,会抛出一个异常。


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

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


还有一个方便的提示:如果你想检查一个空文本框,我推荐
String.IsNullOrWhitespace(textbox.text)
,它将返回bool。这对于像这样的if语句很好。

根据OP在主要帖子中的评论,以及他在其他评论中指出的异常表示“输入字符串的格式不正确”,看起来引发异常的不是上面的代码行(尽管它应该正确地是
.Text
而不是
.Text

相反,此
FormatException
表示可能是
Convert.ToDouble(textbox.Text)
无法将
textbox
的内容转换为
double
。您确定输入了正确的
double
值吗?此问题也可能与您的区域性设置有关

因为当我在程序中编写这个条件时,它抛出一个 例外

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

对。textbox只是一个变量,它保存对类实例的引用,因此其默认值为null;访问.Text属性时应小心,因为如果textbox值设置为null,则会出现NullReferenceException

所以我会这样做(假设它是方法或事件处理程序):

另外,如果要将此字符串转换为双精度字符串,则不同的情况是:

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,则该行仅会引发异常。但你没有提到什么例外。那你有什么问题?你得到了什么例外?你得到了什么例外?您使用的是Windows.Form TextBox还是其他什么?如果您按原样键入,则我认为存在编译时错误。它必须是“textbox.Text”。其次,您应该始终检查(!string.IsNullOrEmpty(textbox.Text))。是的,我使用的是windos.foam textbox。基本上我的编码是。。(Double?textt;If(textbox.text!=null){textt=convert.toDouble(textbox.text);//(输入字符串格式不正确)如果(textt>0){//do something}如果(textt<0){//do something}如果(textt==0){//do something}如果(textt==null){//do something}请编辑问题并添加实际代码。很明显,异常不在此行,因此问题是错误的。如果字符串为“abc pqr”,则String.IsNullOrWhitespace将返回true。因此,请小心使用此.string.IsNullOrEmpty将是正确的。我不认为是这种情况。@anupamsharma这里有一个链接解释。未处理的异常是“输入字符串格式不正确”
void MyMethod()
{
    if(textbox == null) return;

    if(String.IsNullOrWhiteSpace(textbox.Text)) return;

    // your code here if textbox.Text has valid value
}
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;
}