0

我有一个 Item[] _items 项目数组,其中一些项目可能为空。我想检查数组是否包含至少一个非空项。

我目前的实现似乎有点复杂:

    internal bool IsEmtpy { get { return (!(this.NotEmpty)); } }
    private bool IsNotEmpty { get { return ( this.Items.Any(t => t != null));} }

所以我的问题是:有没有一种更简单的方法来检查一个类型化的引用对象数组是否包含至少一个非空对象?

4

1 回答 1

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();

于 2012-07-02T08:47:22.113 回答