我的方法是......
Autodesk.AutoCAD.Geometry.Point3d point = null;
但我似乎无法将Point3d
设置为null
。
有谁可以告诉我为什么以及如何检查Point3d
是否null
?
(Point3D
我的意思是Autodesk.AutoCAD.Geometry.Point3d
)
答案 0 :(得分:4)
Autocad Point3d
是struct
。因此它不能为空,总是有一个值。
最多可以测试无效数字。可能存在要测试的Point3d.Empty
静态属性。
如果您希望它能够null
,请使用Point3d?
使struct
可以为空(通过将其包裹在Nullable<T>
中。
答案 1 :(得分:0)
Point3d
不是类,而是结构,因此它永远不会为null。但您可以使用默认值为(0,0,0)的事实。所以你可以检查它是否等于零。
答案 2 :(得分:0)
Point3D
是一个结构,而不是一个类。
C#中的结构不能具有空值。
如果您需要使用可能是Point3D的类型或者可能为null,则应使用Nullable<Point3D>
或Point3D?
阅读本页以了解结构和类之间的差异:Choosing Between Class and Struct
答案 3 :(得分:0)
由于Point3d
是struct
,因此不能是null
。但是,可以创建一个Nullable<Point3d>
对象,可以为null
:
Point3d? point = null;
但是,现在你必须使用一些稍微复杂的语义与它进行交互:
if (point.HasValue) {
// do something with point.Value, which is a Point3d
} else {
// handle point == null
}
答案 4 :(得分:0)
检查的典型方法是查看点== Point3d.Origin。