如何将一个可空的整型转换为整型?假设我有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;
其他回答
如果v1为空,就不能这样做,但可以用运算符检查。
v2 = v1 ?? 0;
如果给定类型的默认值是可接受的结果:
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()返回字段值,不进行任何检查。
int v2= Int32.Parse(v1.ToString());
v1和v2之间的简单转换是不可能的,因为v1的值域比v2大。它是v1能容纳的所有东西加上零状态。要进行转换,您需要显式地声明int中的哪个值将用于映射null状态。最简单的方法是??操作符
v2 = v1 ?? 0; // maps null of v1 to 0
这也可以用长形式表示
int v2;
if (v1.HasValue) {
v2 = v1.Value;
} else {
v2 = 0;
}
我正在使用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