为什么
int? nullInt = null;
base.Response.Data = (new BusinessLogic.RefDataManager(base.AppSettingsInfo)).SelectAppData(new DC.AppData() { AppDataKey = app_data_key != string.Empty ? app_data_key : null, AppDataTypeId = app_data_type_id != string.Empty ? int.Parse(app_data_type_id) : nullInt });
编译,但是这个
base.Response.Data = (new BusinessLogic.RefDataManager(base.AppSettingsInfo)).SelectAppData(new DC.AppData() { AppDataKey = app_data_key != string.Empty ? app_data_key : null, AppDataTypeId = app_data_type_id != string.Empty ? int.Parse(app_data_type_id) : null});
没有?第二个语句的编译错误是“无法确定条件表达式的类型,因为'int'和null之间没有隐式转换”
DC.AppData是
public class AppData
{
[DataMember(Name = "AppDataKey")]
public string AppDataKey { get; set; }
[DataMember(Name = "AppDataTypeId")]
public int? AppDataTypeId { get; set; }
}
答案 0 :(得分:4)
C#中的三元运算符不相信您将null
表示为int?
。你必须明确地告诉C#编译器你的意思是null
是int?
......
base.Response.Data = (new BusinessLogic.RefDataManager(base.AppSettingsInfo)).SelectAppData(new DC.AppData() { AppDataKey = app_data_key != string.Empty ? app_data_key : null, AppDataTypeId = app_data_type_id != string.Empty ? int.Parse(app_data_type_id) : (int?)null});
...或者int.Parse(app_data_type_id)
是int?
,可以通过投射来实现......
(int?)int.Parse(app_data_type_id)
必须将三元yield操作数中的任何一个显式转换为int?
。
答案 1 :(得分:1)
问题在于:
app_data_type_id != string.Empty ? int.Parse(app_data_type_id) : null
int.Parse返回一个不可为空的int
你需要把它作为一个int?
(int?) int.Parse(app_data_type_id) : null