我喜欢string.IsNullOrEmpty
方法。我喜欢有一些东西,将允许相同的功能为IEnumerable。有这样的情况吗?也许是一些集合帮助器类?我问这个问题的原因是,如果模式是(mylist != null && mylist.Any())
,那么在if
语句中,代码看起来很混乱。如果有Foo.IsAny(myList)
就更干净了。
这篇文章没有给出答案:IEnumerable is empty?。
发布于 2011-02-19 06:47:00
public static bool IsNullOrEmpty<T>(this IEnumerable<T> enumerable) {
return enumerable == null || !enumerable.Any();
}
发布于 2014-07-12 04:32:10
这是@Matt Greer有用答案的修改版本,其中包括一个静态包装器类,这样您就可以将其复制粘贴到新的源文件中,不依赖于Linq,并添加了一个泛型IEnumerable<T>
重载,以避免非泛型版本中值类型的装箱。[编辑:请注意,使用IEnumerable<T>
并不会阻止枚举数的装箱,duck-typing也无法阻止这一点,但至少值类型集合中的元素不会分别装箱。]
using System.Collections;
using System.Collections.Generic;
public static class IsNullOrEmptyExtension
{
public static bool IsNullOrEmpty(this IEnumerable source)
{
if (source != null)
{
foreach (object obj in source)
{
return false;
}
}
return true;
}
public static bool IsNullOrEmpty<T>(this IEnumerable<T> source)
{
if (source != null)
{
foreach (T obj in source)
{
return false;
}
}
return true;
}
}
发布于 2014-11-28 23:38:42
另一种方法是获取枚举数并调用MoveNext()方法来查看是否有任何项:
if (mylist != null && mylist.GetEnumerator().MoveNext())
{
// The list is not null or empty
}
这对IEnumerable和IEnumerable都有效。
https://stackoverflow.com/questions/5047349
复制相似问题