无法确定条件表达式的类型,因为';int';和'<;空>';
本文关键字:int lt gt 无法确定 表达式 类型 因为 条件 | 更新日期: 2023-09-27 18:27:41
这是我的代码:
int? BankName_dd =
int.Parse((e.Item.FindControl("BankName_dd") as DropDownList).SelectedValue) != -1 ?
int.Parse((e.Item.FindControl("BankName_dd") as DropDownList).SelectedValue) : null;
但我不明白为什么这个错误会被提出任何建议?
之所以会发生这种情况,是因为编译器试图首先计算右手边。
int.Parse((e.Item.FindControl("BankName_dd") as DropDownList).SelectedValue)
为int且不可为null,因此参数之间不匹配,即int和null
如果你这样做的话,即使这样也没问题。现在,这会将第一个参数唤醒为可为null的int
int? BankName_dd = int.Parse((e.Item.FindControl("BankName_dd") as DropDownList).SelectedValue) != -1 ? (int?)int.Parse((e.Item.FindControl("BankName_dd") as DropDownList).SelectedValue):null;
SO已回答链接
结果=表达式1?表达2:表达3;
表达式2和表达式3必须是同一类型。null不是有效的int,因此如果expression2是int,则expression3不允许使用null。你可以用int吗?通过将null强制转换为null并使用int到int的隐式转换,作为两者的类型?在左侧。
不过,你的表情没有多大意义。你把所有的工作都做了两次。
var result = int.Parse((e.Item.FindControl("BankName_dd") as DropDownList).SelectedValue);
int? BankName_dd = null;
if(result != -1) BankName_dd = result;
这样做
int? BankName_dd = int.Parse((e.Item.FindControl("BankName_dd") as DropDownList).SelectedValue) != -1 ? int.Parse((e.Item.FindControl("BankName_dd") as DropDownList).SelectedValue):(int?)null;
您的代码可以通过进行重构
int? BankName_dd = int.Parse((e.Item.FindControl("BankName_dd") as DropDownList).SelectedValue);
if(BankName_dd.Value == -1)
BankName_dd = null;
原因C#3.0规范的相关部分是7.13,条件运算符:
?的第二个和第三个操作数:操作员控制条件表达式。设X和Y是第二个和第三个操作数。然后,
如果X和Y是同一类型,那么这就是条件否则,如果存在从X到Y的隐式转换(§6.1),但是而不是从Y到X,则Y是条件表达式的类型。否则,如果存在从Y到X的隐式转换(§6.1),但是而不是从X到Y,则X是条件表达式的类型。否则,无法确定表达式类型,并且编译时出现错误。