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属性