C# 将SqlDouble转换为double?类型导致SqlDouble.Value引发空值异常

C# 将SqlDouble转换为double?类型导致SqlDouble.Value引发空值异常,c#,casting,nullreferenceexception,sqlgeometry,C#,Casting,Nullreferenceexception,Sqlgeometry,我正在尝试使用SqlGeometryBuilder构造一个linestring 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,这将引发n

我正在尝试使用SqlGeometryBuilder构造一个linestring

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异常,而不是返回null,从而破坏我的代码

是否有一种方法可以对SqlGeometry Z和M值不调用
.Value

这有帮助吗

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 );

请不要在问题标题中包含有关语言的信息,除非没有它就没有意义。标签就是为了这个目的。是的,应该这样做。谢谢:)