int和null之间没有隐式转换

时间:2015-05-05 05:45:26

标签: c# nullable implicit-conversion

我有一个类,它具有如下的可空属性;

public class Sample
{
   public int? ID { get; set; }
   public string SampleName { get; set; }
   public bool? Active { get; set; }
   public DateTime? Date { get; set; }
}

当我尝试做类似下面的事情时;

foreach (DataRow tableItem in table.Rows)
{
        Sample sample = new Sample()
        {
            ID = tableItem["ID"] != DBNull.Value ? Convert.ToInt32(tableItem["ID"].ToString()) : null,
            SampleName = tableItem["SampleName"] != DBNull.Value ? tableItem["SampleName"].ToString() : null,
            Active = tableItem["Active"] != DBNull.Value ? Convert.ToBoolean(tableItem["Active"].ToString()) : null,
            Date = tableItem["Date"] != DBNull.Value ? Convert.ToDateTime(tableItem["Date"].ToString()) : null,
        };

    data.Add(sample);
}

它给出的错误如“无法确定条件表达式的类型,因为'int'和''之间没有隐式转换。

1 个答案:

答案 0 :(得分:10)

null没有任何可识别的类型 - 只需要一点刺激就可以让它开心:示例如下所示。

int? number = true ? 5 : (int?)null;

或者你可以做到

int? number = true ? 5 : null as int?;