.NET Point.IsEmpty与IsDefined

cbu*_*000 3 c# system.drawing

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

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

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

我能想到的唯一想法是使用值"new Point(-1,-1)"来默认属性并对其进行测试.有没有更好的办法?如果没有,请确认.

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

谢谢!

ang*_*son 5

有几种方法:

  1. 使属性成为可以为空的Point,这样,当你没有设置它时它将是"null"
  2. 通过将私有布尔字段设置为true来跟踪是否有任何调用setter方法

即.之一:

public Point? Location { ... }
Run Code Online (Sandbox Code Playgroud)

要么:

public Point Location
{
    get ...
    set
    {
        _LocationSet = true;
        _Location = value;
    }
}
Run Code Online (Sandbox Code Playgroud)