Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中的字符串、小数和Null_C#_Asp.net - Fatal编程技术网

C# C语言中的字符串、小数和Null

C# C语言中的字符串、小数和Null,c#,asp.net,C#,Asp.net,下面是我正在尝试使用的代码片段 decimal preTestAir = decimal.Parse(AirPreTestTextBox.Value); preTestAir是十进制数,需要保留十进制数才能发送到数据库。这不能改变。我试图做的是确定AirPreTestTextBox.Value是否为空,如果为空,则为其指定十进制值0.00,然后将其指定给十进制值。只要文本框中有一些数值,上面的代码就非常有效。如果文本框中没有值怎么办?应用程序崩溃了。我如何确定TextBox.Value是否为n

下面是我正在尝试使用的代码片段

decimal preTestAir = decimal.Parse(AirPreTestTextBox.Value);

preTestAir是十进制数,需要保留十进制数才能发送到数据库。这不能改变。我试图做的是确定AirPreTestTextBox.Value是否为空,如果为空,则为其指定十进制值0.00,然后将其指定给十进制值。只要文本框中有一些数值,上面的代码就非常有效。如果文本框中没有值怎么办?应用程序崩溃了。我如何确定TextBox.Value是否为null,如果全部在一行中,如何分配一个值?之所以有一行代码,是因为我有将近100行代码需要以这种方式格式化。我试过使用像??对于不是可空类型的小数不起作用。有人能帮忙吗?感谢您的任何帮助

您可以简单地使用条件运算符:

decimal preTestAir = AirPreTestTextBox.Value == null ? 
                     0.0m :
                     decimal.Parse(AirPreTestTextBox.Value);

您可以简单地使用条件运算符:

decimal preTestAir = AirPreTestTextBox.Value == null ? 
                     0.0m :
                     decimal.Parse(AirPreTestTextBox.Value);

空合并运算符??他是你的朋友。使用

(AirPreTestTextBox.Value ?? "0.00")

空合并运算符??他是你的朋友。使用

(AirPreTestTextBox.Value ?? "0.00")

用三元数就够容易了

decimal preTestAir = String.IsNullOrEmpty(AirPreTestTextBox.Value) ? 0 : decimal.Parse(AirPreTestTextBox.Value);

文本框不太可能包含空字符串,更可能是空字符串。

使用三元字符串就足够容易了

decimal preTestAir = String.IsNullOrEmpty(AirPreTestTextBox.Value) ? 0 : decimal.Parse(AirPreTestTextBox.Value);

文本框不太可能包含空字符串,更可能是空字符串。

只需使用try parse。。。。它将处理任何不可转换为十进制的数据

decimal preTestAir;
if(!deciaml.TryParse(AirPreTestTextBox.Value, out preTestAir))
{
  // handle the fact it couldn't convert if you like...
}

只需使用try parse。。。。它将处理任何不可转换为十进制的数据

decimal preTestAir;
if(!deciaml.TryParse(AirPreTestTextBox.Value, out preTestAir))
{
  // handle the fact it couldn't convert if you like...
}

事实上,这让我犯了这个错误。这有意义吗?mscorlib.dll中发生“System.FormatException”类型的异常,但未在用户代码中处理其他信息:输入字符串的格式不正确。实际上,它引发了此错误。这有意义吗?mscorlib.dll中出现“System.FormatException”类型的异常,但未在用户代码中处理。其他信息:输入字符串的格式不正确。@GreenDeveloper 0.00是双精度的,而不是十进制的。0是一个int,但int可以隐式转换为decimal类型。可以使用0米、0.0米或0.00米。m代表十进制。尾随零的数量很重要,但根据您的使用情况,您可能可以使用其中任何一个。int 0变为十进制0,后面不带零。@GreenDeveloper 0.00是双精度的,不是十进制的。0是一个int,但int可以隐式转换为decimal类型。可以使用0米、0.0米或0.00米。m代表十进制。尾随零的数量很重要,但根据您的使用情况,您可能可以使用其中任何一个。整数0变为十进制0,后面不带零。