如何检查 Point3d 是否不为空?

How do I check if Point3d is not null?

我的方法是...

Autodesk.AutoCAD.Geometry.Point3d point = null;

但我似乎无法将 Point3d 设置为 null

谁能告诉我为什么以及如何检查 Point3d 是否为 null

Point3D 我的意思是 Autodesk.AutoCAD.Geometry.Point3d

Autocad Point3dstruct。因此它不能为空,它总是有一个值。

至多,你可以测试它是否有无效数字。可能有一个 Point3d.Empty static 属性 来测试。

如果您希望它能够成为 null,请使用 Point3d? 使 struct 可为空(通过将其包装在 Nullable<T>.

Point3d 不是 class 而是一个结构,因此它永远不会为空。但是您可以使用默认值为 (0, 0, 0) 的事实。所以你可以检查它是否等于零。

Point3D 是一个结构,而不是 class。 C# 中的结构不能有空值。 如果您需要使用可能是 Point3D 或可能为 null 的类型,则应使用 Nullable<Point3D>Point3D?

阅读此页面以了解结构与 classes 之间的区别:Choosing Between Class and Struct

因为 Point3dstruct,所以不能是 null。然而,您可以创建一个Nullable<Point3d>对象,可以null:

Point3d? point = null;

但是,现在您必须使用一些稍微复杂的语义与它交互:

if (point.HasValue) {
    // do something with point.Value, which is a Point3d
} else {
    // handle point == null
}

典型的检查方法是查看点是否== Point3d.Origin。