我有一个Item [] _items项目数组,其中一些项目可能为null。我想检查数组是否包含至少一个非空项。
我目前的实施似乎有点复杂:
internal bool IsEmtpy { get { return (!(this.NotEmpty)); } }
private bool IsNotEmpty { get { return ( this.Items.Any(t => t != null));} }
所以我的问题是:是否有更简单的方法来检查类型化的引用对象数组是否包含至少一个非空对象?
答案 0 :(得分:2)
您的实施没有复杂性。基本上,检查数组中是否存在非空值的唯一方法是查看所有值,直到达到非空值或数组末尾。
以下代码更容易理解:
internal bool IsEmtpy { get { return this.Items.All(t => t == null); } }
private bool IsNotEmpty { get { return this.Items.Any(t => t != null); } }
最好扩展IEnumerable
,如下所示:
public static class Extensions {
public static bool ContainsOnlyEmpty<TSource>(this IEnumerable<TSource> source) {
return source.All(t => t == null);
}
public static bool ContainsNonEmpty<TSource>(this IEnumerable<TSource> source) {
return source.Any(t => t != null);
}
}
并像这样使用它:bool nonEmpty = this.Items.ContainsNonEmpty();