c# - 为什么 ? : operator does not work with nullable<int> assignation?

标签 c# .net operators

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

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

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

myObject = new MyObject() 
{
    myNullableProperty = language == null ? null : language.id;
}

但是没用!它告诉我 null 不能转换为 int

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

为什么会这样?

最佳答案

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

myNullableProperty = language == null ? (int?)null : language.id

关于c# - 为什么 ? : operator does not work with nullable<int> assignation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8832129/

相关文章:

c# - 读取动态添加的 header 的 Gridview header 值

c# - 使用过滤器将一个集合绑定(bind)到多个选项卡

.net - Mono for Android Project 不适用于面向 .NET 框架 4 的库

c# - 对同一 http 主机的多个同时请求

带有 charAt() 方法的 String 上的 Java += 运算符导致 char 添加

c# - 将一个 IEnumerable<Type1> 的值添加到另一个 IEnumerable<Type2>

c# - 哪个是 wpf 中 MVVM 模式的良好实践?

.net - 在 .NET 中,字符串初始化为 null 的基本原理是什么?

c++ - 您使用 : and, 或不使用哪些 C++ 逻辑运算符以及同类或 C 风格的运算符?为什么?

Python:使用列表中的运算符进行数学运算