var dict = new Dictionary<string, object>();
DateTime? myDate;
/*Next line gives: Type of conditional expression cannot be
determined because there is no implicit conversion between 'System.DateTime?'
and 'System.DBNull' */
dict.Add("breakit", myDate.HasValue ? myDate.Value : DBNull.Value);
我不明白为什么如果一个或另一个进入期望类型为Object的字典,就需要进行隐式转换。
答案 0 :(得分:6)
在C#中,每个条件表达式都必须具有类型。你的表达是什么类型的?
我理解您的担心,您的特定情况不需要转换,但这就是C#编译器的工作方式,因此您必须遵守其规则。
这应该有效(我没有检查):
dict.Add("breakit", myDate.HasValue ? (object)myDate.Value : (object)DBNull.Value);
答案 1 :(得分:1)
你有没有尝试过:
DateTime? date = myDate.HasValue ? myDate.Value : null;
dict.Add("breakit", date);