将SqlDouble转换为double? type导致SqlDouble.Value引发空值异常

时间:2014-02-28 07:27:35

标签: c# casting nullreferenceexception sqlgeometry

我正在尝试使用SqlGeometryBuilder构造一个线串。

SqlGeometry point = line.STPointN(x)
gb.BeginFigure((double)point.X, (double)point.Y, (double?)point.Z, (double?)point.M);

SqlGeometry的.Z和.M属性返回类型为SqlDouble,因此我尝试将它们都转换为double?。但是,转换这些属性似乎会在属性上调用.Value,这将抛出一个空异常而不是返回null,从而破坏了我的代码。

有没有一种方法可以为SqlGeometry Z和M值调用哪些不调用.Value

1 个答案:

答案 0 :(得分:1)

这有帮助吗?

SqlGeometry point = line.STPointN(x)
gb.BeginFigure((double)point.X, (double)point.Y, point.HasZ ? (double?)point.Z : (double?)null, point.HasM ? (double?)point.M : (double?)null );