C# 在三元运算符中将可为空的int赋值给int

C# 在三元运算符中将可为空的int赋值给int,c#,nullable,C#,Nullable,我有一门课说 class Test { int? a; int b; } 现在我正在创建一个testclass Test objTest = new Test(); objTest.b = objTest.a; 这里它抛出错误不能隐式转换int?到int 所以我想出了解决办法 objTest.b = ObjTest.a ?? 0; 在这里工作很好,但是 objTest.b = objTest.a == null ? 0 : objTest.a 失败 在第二个示例中,您仍然需

我有一门

class Test
{
   int? a;
   int b;
}
现在我正在创建一个
testclass

Test objTest = new Test();
objTest.b = objTest.a;
这里它抛出错误
不能隐式转换int?到int

所以我想出了解决办法

objTest.b  = ObjTest.a ?? 0;
在这里工作很好,但是

objTest.b = objTest.a == null ? 0 : objTest.a
失败


在第二个示例中,您仍然需要将
a
转换为int

objTest.b = objTest.a == null ? 0 : (int)objTest.a

将编译。但是只要按照你想到的第一种方法去做就行了。

实际的问题是“条件运算符的类型是什么?”这一点以前已经回答过了。请参阅、等。与其说是“失败”,不如解释发生了什么并研究它。
Object.a.Value
将通过。请看该方法=>而不是强制转换,我建议使用Nullable上的.Value属性