如何将一个可空的整型转换为整型?假设我有2种类型的int如下:
int? v1;
int v2;
我想把v1的值赋给v2。V2 = v1;将导致错误。如何将v1转换为v2?
如何将一个可空的整型转换为整型?假设我有2种类型的int如下:
int? v1;
int v2;
我想把v1的值赋给v2。V2 = v1;将导致错误。如何将v1转换为v2?
当前回答
Int nullable到Int的转换可以这样完成:
v2=(int)v1;
其他回答
int v2= Int32.Parse(v1.ToString());
就我而言,最好的解决方案是使用GetValueOrDefault()方法。
v2 = v1.GetValueOrDefault();
我正在使用c# 9和。net 5作为示例
foo是可空的int,我需要得到foo的int值
var foo = (context as AccountTransfer).TransferSide;
int value2 = 0;
if (foo != null)
{
value2 = foo.Value;
}
详见https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/nullable-value-types#examination-of-an-instance-of-a-nullable-value-type
如果你知道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;
Int nullable到Int的转换可以这样完成:
v2=(int)v1;