我有一个方法,它将一个可以为null的int作为参数:
myMethod(int? parameter) {
//body
}
并且,在调用此方法的方法中,我将传递的参数显然可以是null或int(但首先是字符串)。我想要做的是以下几点:
myMethod(
!string.IsNullOrEmpty(someString)?
Convert.ToInt32(someString) : null
);
但是我收到了错误:
条件表达式的类型无法确定,因为' int'之间没有隐式转换。和null
答案 0 :(得分:4)
您需要将一侧投射到int?
!string.IsNullOrEmpty(someString)
? Convert.ToInt32(someString)
: (int?)null
答案 1 :(得分:3)
您希望您使用的条件运算符的值评估为int?
,但第二个及其操作数的类型都不是int?
。它们都可以隐式转换为int?
,但是当C#需要确定表达式的类型时,给定选项A和B作为选项,它将总是选择A或B ,而不是类型C碰巧有来自A和B的隐式转换。
至于做什么,只需将最后两个操作数中的任何一个转换为int?
类型。 (这与哪一个无关。)