在我的 UI 类中,开发人员可以选择定义位置属性(System.Drawing.Point 类型)。默认情况下,此属性初始化为 Point.Empty。类封装的内部代码使用 Point 属性的 .IsEmpty 来确定是否已设置位置。如果该属性不为空,则将使用 x/y 值。如果为空,代码将尝试使用行/列算法放置它。

我的问题:
我正在使用该属性的 .IsEmpty 来确定它是否已设置。令我惊讶的是,如果开发人员将属性设置为 0,0,它会显示为 Empty。点 0,0 在图形中有效。我也理解为什么 .IsEmpty 为 0,0 值返回 true。

1) 没有创建我自己的类或从 System.Drawing.Point 继承,有没有办法知道是否设置了属性?

我能想到的唯一想法是将属性默认为“new Point(-1,-1)”并对此进行测试。有没有更好的办法?如果不是,请确认。

我在 Visual Studio 2005 和 Visual Studio 2008 中使用 C#

谢谢!

最佳答案

有几种方法:

  • 使属性成为可空的Point,这样,当你没有设置它时,它就会为“null”
  • 通过将私有(private) bool 字段设置为 true 来跟踪是否有任何东西调用了 setter 方法

  • IE。任何一个:
    public Point? Location { ... }
    

    或者:
    public Point Location
    {
        get ...
        set
        {
            _LocationSet = true;
            _Location = value;
        }
    }
    

    关于c# - .NET Point.IsEmpty 与 IsDefined,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1773232/

    10-16 04:42