【发布时间】:2011-12-19 10:40:06
【问题描述】:
.NET 库中是否有一个函数可以返回 true 或 false 来判断数组是 null 还是空? (类似于string.IsNullOrEmpty)。
我在 Array 类中查看了类似这样的函数,但什么也没看到。
即
var a = new string[]{};
string[] b = null;
var c = new string[]{"hello"};
IsNullOrEmpty(a); //returns true
IsNullOrEmpty(b); //returns true
IsNullOrEmpty(c); //returns false
【问题讨论】:
-
if (arr != null && arr.Length != 0)有什么问题?或者,如果您需要重复使用它,请创建一个扩展方法。 -
@CodyGray 对于字符串有同样的问题,你不想到处这样做。
-
@CodyGray - 我同意,但我可以看到如果你不得不重复写它会变得很痛苦。在我的大多数项目中,我都有一个扩展方法可以做到这一点。
-
@CodyGray - 不同之处在于扩展方法意味着输入 2 或 3 个字符,然后使用 IntelliSense 自动完成。你必须写完整的
if (arr != null && arr.Length != 0)。 -
@Yuriy:不,据我所知,那里没有进行任何特殊优化。首先,编译器在 C# 中做的优化很少。几乎所有优化都由 JITer 在运行时处理。是的,JITer 很可能会内联这么短的方法,但不能保证。但是即使发生这种情况,方法调用和上面的代码也没有区别。
IsNullOrEmpty方法内部没有什么神奇之处——它只是为了方便起见。 JITer 的早期版本实际上在正确优化方面存在问题。