C# C代码赢得';我不编译。null和int之间没有隐式转换
可能重复:C# C代码赢得';我不编译。null和int之间没有隐式转换,c#,string,null,nullable,C#,String,Null,Nullable,可能重复: 为什么这样不行?似乎是有效的代码 string cert = ddCovCert.SelectedValue; int? x = (string.IsNullOrEmpty(cert)) ? null: int.Parse(cert); Display(x); 我应该如何编写代码?该方法采用可为null的。如果下拉列表中选择了一个字符串,我需要将其解析为int,否则我想将null传递给该方法。我遇到了同样的问题。。。我通常只是将空值转换为(int?) int? x =
为什么这样不行?似乎是有效的代码
string cert = ddCovCert.SelectedValue;
int? x = (string.IsNullOrEmpty(cert)) ? null: int.Parse(cert);
Display(x);
我应该如何编写代码?该方法采用可为null的。如果下拉列表中选择了一个字符串,我需要将其解析为int,否则我想将null传递给该方法。我遇到了同样的问题。。。我通常只是将空值转换为(int?)
int? x = string.IsNullOrEmpty(cert) ? (int?)null : int.Parse(cert);
重复-另请参阅了解更多信息,请参阅感谢Andrew Hare。看起来这种行为是三元运算符特有的(如果需要,可以使用传统的if语句来避免)。看起来还有其他一些重复,在我看来,这是微软糟糕的API设计。我有时需要它,但总是忘了,最后在这里结束:D.谢谢节省了我的时间。谢谢。太奇怪了,你需要投空。。为什么null不能是通用类型?很有帮助。回答了我的问题。这也是可能的:
int?x=string.IsNullOrEmpty(证书)?null:(int?)int.Parse(cert)代码>
int? x = (string.IsNullOrEmpty(cert)) ? (int?)null: int.Parse(cert);