转换成int的另一种方法?了一倍

本文关键字:一倍 int 另一种 方法 转换 | 更新日期: 2023-09-27 18:16:34

有什么方法可以转换吗?

public int? intVal ;
public double? dblVal ;

我现在是如何工作的

if(dblVal==null)
    intVal =null;
else
    intVal = Convert.ToInt32(dblVal);

有其他方法吗?

转换成int的另一种方法?了一倍

cast:

intVal = (int?) dblVal;

如果dblVal为空,这将导致null值。注意,与Convert.ToInt32(double)不同,如果dblValint的范围之外,不会导致异常。如果这是一个问题,你应该弄清楚你想要达到的目标。

来自c# 5规范,第6.2.3节:

显式可空转换允许在非空值类型上操作的预定义显式转换也用于这些类型的可空形式。对于从非空值类型S转换为非空值类型T(第6.1.1节、第6.1.2节、第6.1.3节、第6.2.1节和第6.2.2节)的每个预定义的显式转换,存在以下可空转换:

  • 从S?T ?。
  • S到T的显式转换?
  • 从S?t .

基于S到T的底层转换的可空转换的求值过程如下:

  • 如果可空转换是从S?T ?:
    • 如果源值为空(HasValue属性为false),则结果为T类型的空值。
    • 否则,转换被评估为从S?到S,然后是从S到T的底层转换,然后是从T到T的包装。

有个办法:

intVal = dblVal.HasValue ? Convert.ToInt32(dblVal.Value) : (int?)null;