Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.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# - Fatal编程技术网

C# 三元运算符意外结果

C# 三元运算符意外结果,c#,C#,有人能评论一下我的问题吗。三元运算符抛出一个错误,这里的参数是,如果它的计算结果为null,那么它应该忽略冒号后面的部分。为此设置的手表指示异常: Int32.Parse(SQLDataReader["TrayId"].ToString())' threw an exception of Type 'System.FormatException 表明它不能将null转换为字符串。这就是它的工作原理吗 ShipmentId = SQLDataReader["ShipmentId"] == DBN

有人能评论一下我的问题吗。三元运算符抛出一个错误,这里的参数是,如果它的计算结果为null,那么它应该忽略冒号后面的部分。为此设置的手表指示异常:

Int32.Parse(SQLDataReader["TrayId"].ToString())' threw an exception of Type 'System.FormatException

表明它不能将null转换为字符串。这就是它的工作原理吗

ShipmentId = SQLDataReader["ShipmentId"] == DBNull.Value ? 0 : Int32.Parse(SQLDataReader["ShipmentId"].ToString()),

建议使用DBNull.Value.Equals方法与DBNull进行比较,如本页所述:


建议使用DBNull.Value.Equals方法与DBNull进行比较,如本页所述:


ShipmentId
是一个整数,但它也是
null
,这意味着c类型是
int?

错误归结为以下代码:

Int32.Parse((string)null)
解析将放弃,因为您无法将
null
转换为
int

要解决此问题,请使用
TryParse

int ShipmentId = 0;
int.TryParse(SQLDataReader["ShipmentId"].ToString(), out ShipmentId);

如果值为
null
,或者由于某种奇怪的原因,该值实际上无法转换为int(如“asdf121343fds”)。

ShipmentId
是一个整数,但它也可以
为null
,这意味着c类型是
int?

错误归结为以下代码:

Int32.Parse((string)null)
解析将放弃,因为您无法将
null
转换为
int

要解决此问题,请使用
TryParse

int ShipmentId = 0;
int.TryParse(SQLDataReader["ShipmentId"].ToString(), out ShipmentId);

如果该值为
null
,或者由于某种奇怪的原因,该值实际上无法转换为int(如“asdf121343fds”),则将涵盖此内容.

FormatException
通常意味着它无法将其解析为
int
。您应该看到实际返回的内容。尝试使用
null
而不是
DBNull.Value
“表示它无法将null转换为字符串”否。它表示它无法将
null
转换为
int
。您可以使用
TryParse
来避免异常。@DanielA.White,它返回DBNull。ShipmentId在代码和数据库中都是int。它来自测试页面的一个字符串。
FormatException
通常意味着它无法将其解析为
int
。您应该看到实际返回的内容。尝试使用
null
而不是
DBNull.Value
“建议它不能将null转换为字符串”不可以。它说它不能将
null
转换为
int
。您可以使用
TryParse
来避免异常。@DanielA.White,它返回DBNull。ShipmentId在代码和数据库中都是int。它来自测试页面的一个字符串。感谢您的帮助。我有一些其他问题,但最终你的代码工作!祝你今天愉快,尼克!谢谢你的帮助。我有一些其他问题,但最终你的代码工作!祝你今天愉快,尼克!谢谢你的帖子。我试过TryParse,但它不起作用,但出于其他原因,我认为——我的专栏不匹配,这是我愚蠢的错误。所以,当我尝试@Nick Raverty的建议时,我发现了我不匹配的列,所以这是一个更正它们的问题。@Risho,是的,我在发布我的答案15分钟后注意到,您的错误消息和代码示例使用了不同的列。谢谢您的帖子。我试过TryParse,但它不起作用,但出于其他原因,我认为——我的专栏不匹配,这是我愚蠢的错误。所以,当我尝试@Nick Raverty的建议时,我发现了我不匹配的列,因此需要更正它们。@Risho,是的,我在发布答案15分钟后注意到,您的错误消息和代码示例使用了不同的列。