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

int? v1;  
int v2; 

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


当前回答

像这样,

if(v1.HasValue)
   v2=v1.Value

其他回答

在c# 7.1及以后版本中,类型可以通过使用默认字面值而不是默认操作符来推断,因此它可以写成如下:

v2 = v1 ?? default;
 int v2= Int32.Parse(v1.ToString());

我正在使用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

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

v2 = Convert.ToInt32(v1);

v2 = (int)v1;

v2 = v1.GetValueOrDefault();

V2 = v1。HasValue吗?v1:0;

GetValueOrDefault ()

检索对象的值。如果它为null,则返回int的默认值,即0。

例子:

v2 = v1.GetValueOrDefault ();