为什么?:运算符不能使用可空的<int>赋值?

J4N*_*J4N 2 .net c# operators

我正在为我的数据库创建一个对象,我发现了一个奇怪的东西,我不明白:

我有一个对象应该用ID引用"语言",但这可以为null,所以我的属性是 int?(Nullable<int>)

所以我首先尝试使用对象初始化器:

myObject = new MyObject() 
{
    myNullableProperty = language == null ? null : language.id;
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用!它告诉我null无法转换为int

但是如果我在一个if/else结构中,我可以在var中放入null,然后将其分配给我的属性.

为什么这样做?

Dar*_*rov 9

您可以尝试转换为nullto,int?因为?:运算符需要两个操作数返回相同的类型:

myNullableProperty = language == null ? (int?)null : language.id
Run Code Online (Sandbox Code Playgroud)