2

我的方法是...

Autodesk.AutoCAD.Geometry.Point3d point = null;

但我似乎无法将 a 设置Point3dnull.

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

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

4

5 回答 5

5

AutocadPoint3d是一个struct. 因此它不能为空,它总是有一个值。

最多,您可以测试它的无效数字。可能有一个Point3d.Empty静态属性要测试。

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

于 2015-03-02T14:44:37.397 回答
0

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

于 2015-03-02T14:44:56.563 回答
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
}
于 2015-03-02T14:46:31.480 回答
0

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

阅读此页面以了解结构和类之间的区别:在类和结构之间选择

于 2015-03-02T14:45:42.203 回答
0

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

于 2015-03-03T13:25:36.930 回答