Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检查尺码类型是否为空的正确方法是什么?_C# - Fatal编程技术网

C# 检查尺码类型是否为空的正确方法是什么?

C# 检查尺码类型是否为空的正确方法是什么?,c#,C#,假设我有这样一种方法: 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); 或

假设我有这样一种方法:

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);

sizeData.IsEmpty
sizeData == new Size(0, 0);
我不想只为了检查我是否有无量纲的尺寸而新建一个尺寸类型。根据.NET大小文档,似乎有几种方法可以检查空大小,但在备注部分似乎有一些注意事项


所有这些选项在功能上是否相同?

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


查看如果这是
System.Drawing.Size
(WinForms),您可以使用
IsEmpty
属性

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

public bool IsEmpty
{
    get
    {
        return (this._width < 0.0);
    }
}
公共图书馆是空的
{
得到
{
返回(此宽度<0.0);
}
}
因此,如果要检查它是否为默认的
大小
值,请将其与
大小进行比较。根据
大小,将其为空
默认(大小)
。如果
宽度
高度
0,则IsEmpty
将为

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

var isSizeEmpty = (sizeData.Width == 0 && sizeData.Height == 0);
sizeData
Size.Empty进行比较将不起作用,因为上面说:

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


sizeData
new Size(0,0)
进行比较既简单又干净,而且(在我看来)比我的第一个变体要好一点。但是(在性能和内存方面)的差异是无法测量的。

大小是自定义类吗?或者从哪个名称空间获得它?也许一个简单的sizeData==null就可以了?它是一个标准的.NET类型。System.Windows,Size。我认为Size是struct,否则与新对象竞争就没有意义了。它们做不同的事情-查看文档中的
Size.Empty
;它与新尺寸(0,0)不同。“当调用此属性时,Size实例的宽度和高度等于负无穷大。”因此,这取决于您的逻辑,什么是空的<代码>大小。IsEmpty
未检查“无量纲大小”。:“因此,不要使用此属性检查0区域”谢谢--我在问题中引用了该链接:-)嗯,我没有在文本中识别该链接,我更喜欢您的第一种方法,因为它不需要创建新的
大小。但是你是对的,如果OP需要检查“无量纲尺寸”,他需要比较
宽度
高度
Size.IsEmpty
还提到不应出于以下原因使用它:“不要使用此属性检查0区域”@TimSchmelter实际上不是。正如@DStanley指出的,我误解了文档
System.Drawing.Size.IsEmpty
检查
高度和
宽度是否都为零。无论如何,我不认为在所有这些变化中有任何相关的性能或内存差异。但是OP使用的是工作方式不同的:
public bool IsEmpty{get{return\u width<0;}}
这并不是我真正希望的答案,但是回答了这个问题。谢谢你完全正确。MSDN中的注释让我有点困惑。@axlj
System.Windows.Size.Empty
不等于
new Size(0,0)
!这是一个相当新的尺寸(double.NegativeInfinity,double.NegativeInfinity)
!因此
新大小(0,0)==Size.Empty
将为
false