我正在为我的数据库创建一个对象,我发现了一个奇怪的东西,我不明白:
我有一个对象应该用ID引用“语言”,但这可以为null,所以我的属性是int?(Nullable<int>)
所以我首先尝试使用对象初始化器:
myObject = new MyObject()
{
myNullableProperty = language == null ? null : language.id;
}
但它不起作用!它告诉我null无法转换为int
但如果我在if/else
结构中,我可以在var中放置null,然后将其分配给我的属性。
为什么这样做?
答案 0 :(得分:9)
您可以尝试将null
强制转换为int?
,因为?:
运算符要求两个操作数都返回相同的类型:
myNullableProperty = language == null ? (int?)null : language.id
答案 1 :(得分:0)
这是因为类型不匹配。您必须将null值转换为int类型。
答案 2 :(得分:0)
原因是,在使用?
运算符时,:
的左侧和右侧需要来自同一类型且typeof(null)!=typeof(int)
所以:
myNullableProperty = language == null ? (int?)null : language.id;
答案 3 :(得分:0)
很可能将null解释为显然无法分配给int的对象。您可能想要使用myNullableProperty = language == null ? (int?)null : language.id;