检查大小类型是否为空的正确方法是什么

本文关键字:方法 是什么 小类 类型 是否 检查 | 更新日期: 2023-09-27 18:32:36

假设我有这样的方法:

public SomeSizeCheckingMethod(Size sizeData)
{
    var isSizeEmpty = (sizeData == new Size(0, 0));
    //some other logic based on this question
}

要检查空大小,我的选择似乎是:

sizeData == Size.Empty

sizeData.IsEmpty

sizeData == new Size(0, 0);

我宁愿不 new() 一个大小类型只是为了检查我是否有一个无量纲的大小。 根据此处的 .NET Size 文档,看起来有几种方法可以检查空大小,但备注部分似乎有一些警告。

所有这些选项在功能上是否等效?

检查大小类型是否为空的正确方法是什么

根据文档Size.IsEmpty如果WidthHeight 0,将true

由于您希望HeightWidht为零,因此您可以轻松比较它们:

var isSizeEmpty = (sizeData.Width == 0 && sizeData.Height == 0);

将您的sizeDataSize.Empty进行比较是行不通的,因为文档说:

调用

此属性时,Size 实例的宽度和高度等于负无穷大。

sizeDatanew Size(0, 0)进行比较既简单又干净,看起来(对我来说)比我的第一个变体好一点。但是差异(性能和内存)将无法测量。

如果这是System.Drawing.Size (WinForms),则可以只使用 IsEmpty 属性。

但是,System.Windows.Size (WPF) 有一个奇怪的IsEmpty实现:

public bool IsEmpty
{
    get
    {
        return (this._width < 0.0);
    }
}

因此,如果要检查它是否为默认Size值,请将其与Size.Emptydefault(Size)进行比较

与大小相比。空的应该是最好的。

查看 MSDN