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