.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
答案 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?
进行显式比较