visual studio在有效表达式上出错
本文关键字:出错 表达式 有效 studio visual | 更新日期: 2023-09-27 18:08:17
为什么visual studio给我一个错误:
public void afunction(int? bar){ somecode }
afunction(String.IsNullOrEmpty(Request["foo"])?null:int.Parse(Request["foo"]));
它告诉我null和int之间没有隐式转换
?的第二个和第三个操作数操作符必须具有兼容的类型。在你的例子中,第二个是null,第三个是int。没有隐式的从int到null或从null到int的转换。只有显式的,比如强制转换为object或Nullable<int>
。你可以考虑这样做:
afunction(String.IsNullOrEmpty(Request["foo"]) ? default(int?) : int.Parse(Request["foo"]));
这里没有问题,因为是从int到int的隐式转换?
简化版:
int? x = true ? null : 1;
不能确定条件表达式的类型,因为
<null>
和'int'之间没有隐式转换
所以条件运算符不像你期望的那样工作(关于类型转换)。
重构不会有什么坏处,只要把它分割成一些可读的东西就行了。
您需要稍微改变一下您的方法,例如:
? null : new Nullable<int>(int.Parse(Request["foo"]));
编译器表示你负责类型的转换