C# 可空整数 - 编译错误

C# Nullable Ints - Compile Error

为什么

            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});

不会吧?第二条语句的编译错误是 "Type of conditional expression cannot be determined because there is no implicit conversion between 'int' and null"

DC.AppData 是

public class AppData
{
    [DataMember(Name = "AppDataKey")]
    public string AppDataKey { get; set; }

    [DataMember(Name = "AppDataTypeId")]
    public int? AppDataTypeId { get; set; }


}

C# 中的三元运算符不相信您将 null 表示为 int?。您必须明确告诉 C# 编译器您的意思是 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) : (int?)null});

...或者 int.Parse(app_data_type_id) 是一个 int? 通过铸造它...

(int?)int.Parse(app_data_type_id)

三元 yield 操作数中的任何一个都必须显式转换为 int?

问题出在这里:

app_data_type_id != string.Empty ? int.Parse(app_data_type_id) : null

int.Parse returns 不可为空的整数

您需要将其转换为整数吗?

(int?) int.Parse(app_data_type_id) : null