解释为什么无法为int赋值null,例如
int? accom = (accomStr == "noval" ? null : Convert.ToInt32(accomStr));
Run Code Online (Sandbox Code Playgroud)
这段代码出了什么问题?
Har*_*ber 239
问题不在于null不能分配给int?.问题是三元运算符返回的两个值必须是相同的类型,或者必须可以隐式转换为另一个.在这种情况下,null不能隐式转换为int或者vs-versus,因此必须使用explict强制转换.试试这个:
int? accom = (accomStr == "noval" ? (int?)null : Convert.ToInt32(accomStr));
Run Code Online (Sandbox Code Playgroud)
Wil*_*ean 40
Harry S所说的是完全正确的,但是
int? accom = (accomStr == "noval" ? null : (int?)Convert.ToInt32(accomStr));
Run Code Online (Sandbox Code Playgroud)
也会做的伎俩.(我们Resharper用户总能在人群中发现彼此......)
小智 6
另一种选择是使用
int? accom = (accomStr == "noval" ? Convert.DBNull : Convert.ToInt32(accomStr);
Run Code Online (Sandbox Code Playgroud)
我最喜欢这个.