如何将可为空的 int
转换为 int
?假设我有 2 种类型的 int,如下所示:
int? v1;
int v2;
我想将v1
的值分配给v2
。 v2 = v1;
会导致错误。如何将 v1
转换为 v2
?
最佳答案
到目前为止其他答案都是正确的;我只想再添加一个稍微干净一点的:
v2 = v1 ?? default(int);
任何Nullable<T>
可以隐式转换为其 T
, 前提是被评估的整个表达式永远不会导致对 ValueType 的空赋值。因此,空合并运算符 ??
只是三元运算符的语法糖:
v2 = v1 == null ? default(int) : v1.Value;
...这又是 if/else 的语法糖:
if(v1==null)
v2 = default(int);
else
v2 = v1.Value;
此外,从 .NET 4.0 开始,Nullable<T>
有一个“GetValueOrDefault()”方法,它是一个 null 安全的 getter,基本上执行上面显示的 null 合并,所以这也有效:
v2 = v1.GetValueOrDefault();
关于c# - 如何将 C# 可为空的 int 转换为 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5995317/