IsNullOrEmpty等效于Array? C#

时间:2011-12-19 10:40:07

标签: c# arrays

.NET库中是否有函数返回true或false,表示数组是空还是空? (类似于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

11 个答案:

答案 0 :(得分:46)

没有现有的,但您可以使用此扩展方法:

/// <summary>Indicates whether the specified array is null or has a length of zero.</summary>
/// <param name="array">The array to test.</param>
/// <returns>true if the array parameter is null or has a length of zero; otherwise, false.</returns>
public static bool IsNullOrEmpty(this Array array)
{
    return (array == null || array.Length == 0);
}

只需将其放在某个扩展程序类中,它就会Array扩展为IsNullOrEmpty方法。

答案 1 :(得分:24)

您可以创建自己的扩展方法:

public static bool IsNullOrEmpty<T>(this T[] array)
{
    return array == null || array.Length == 0;
}

答案 2 :(得分:14)

在VS 2015中引入Null-conditional Operator,相反的是 NullOrEmpty可以是:

if (array?.Length > 0) {           // similar to if (array != null && array.Length > 0) {

但由于运算符优先级,IsNullOrEmpty版本看起来有点难看:

if (!(array?.Length > 0)) {

答案 3 :(得分:6)

如果您使用ICollection<T>,则更通用:

public static bool IsNullOrEmpty<T> (this ICollection<T> collection)
{
    return collection == null || collection.Count == 0;
}

答案 4 :(得分:2)

这是(当前)投票答案的更新的C#8版本

public static bool IsNullOrEmpty<T>([NotNullWhen(false)] this T[]? array) =>
    array == null || array.Length == 0;

答案 5 :(得分:1)

不,但你可以自己编写一个扩展方法。或者你自己的库中的静态方法,如果你不喜欢在null类型上调用方法。

答案 6 :(得分:1)

如果您初始化了像

这样的数组
string[] myEmpytArray = new string[4];

然后使用

检查数组元素是否为空
myEmpytArray .All(item => item == null)

尝试

 public static bool IsNullOrEmpty<T> (this ICollection<T> collection)
 {
    if (collection == null || collection.Count == 0)
        return true;
    else
       return collection.All(item => item == null);
 }

答案 7 :(得分:1)

您还可以使用Any创建扩展方法:

public static bool IsNullOrEmpty<T>(this T[] array) where T : class
    {
        return (array == null || !array.Any());
    }

不要忘记在使用声明中添加using System.Linq;

答案 8 :(得分:0)

使用C#Linq简化了检查null或空值或Length的操作。使用空合并运算符,只需执行以下操作即可:

if (array?.Any())
    return true;
else return false;

答案 9 :(得分:0)

从C#6.0开始,可以使用null传播运算符来表达简洁:

if (array?.Count.Equals(0) ?? true)
  

注释1:由于following reason

?? false是必要的      

注释2:作为奖励,声明is also "thread-safe"

答案 10 :(得分:0)

if (array?.Any() != true) { ... }
  • 别忘了拥有using System.Linq;
  • 请注意,由于基本类型为true,因此必须与bool?进行显式比较