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之间没有隐式转换

visual studio在有效表达式上出错

?的第二个和第三个操作数操作符必须具有兼容的类型。在你的例子中,第二个是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"]));

编译器表示你负责类型的转换