如何将一个可空的整型转换为整型?假设我有2种类型的int如下:

int? v1;  
int v2; 

我想把v1的值赋给v2。V2 = v1;将导致错误。如何将v1转换为v2?


当前回答

可以使用以下任何一种转换方法:

v2 = Convert.ToInt32(v1);

v2 = (int)v1;

v2 = v1.GetValueOrDefault();

V2 = v1。HasValue吗?v1:0;

其他回答

如果你知道v1有一个值,你可以使用value属性:

v2 = v1.Value;

如果有,使用GetValueOrDefault方法将赋值,否则为类型的默认值,或者您指定的默认值:

v2 = v1.GetValueOrDefault(); // assigns zero if v1 has no value

v2 = v1.GetValueOrDefault(-1); // assigns -1 if v1 has no value

你可以使用HasValue属性来检查v1是否有值:

if (v1.HasValue) {
  v2 = v1.Value;
}

GetValueOrDefault(T)方法也有语言支持:

v2 = v1 ?? -1;

如果给定类型的默认值是可接受的结果:

if (v1.HasValue)
    v2 = v1.GetValueOrDefault();

如果你想在结果为undefined时获得不同的默认值:

v2 = v1.GetValueOrDefault(255);    // or any valid value for int in place of 255

如果你只是想要返回值(不管方法是否失败):

v2 = v1.GetValueOrDefault();

net 4.7.2。: GetValueOrDefault()返回字段值,不进行任何检查。

可以使用以下任何一种转换方法:

v2 = Convert.ToInt32(v1);

v2 = (int)v1;

v2 = v1.GetValueOrDefault();

V2 = v1。HasValue吗?v1:0;

如果v2不为空,它将把v1的值赋给v2,否则它将采用默认值为零。

v2=v1??0

或者下面是另一种写法。

v2 = v1.HasValue?v1:0

如果v1为空,就不能这样做,但可以用运算符检查。

v2 = v1 ?? 0;