c# – 检查通用IEnumerable是否为空
发布时间:2020-12-15 19:57:49 所属栏目:百科 来源:网络整理
导读:假设我有一个可以是IEnumerable T类型的对象.我想编写一个方法,如果对象的类型为IEnumerable T,则为null,并且不为空,则返回true. 这是我到目前为止所得到的: public bool IsNullOrEmpty(object obj){ if (obj != null) { if (obj is IEnumerableobject) { r
假设我有一个可以是IEnumerable< T>类型的对象.我想编写一个方法,如果对象的类型为IEnumerable< T>,则为null,并且不为空,则返回true.
这是我到目前为止所得到的: public bool IsNullOrEmpty(object obj) { if (obj != null) { if (obj is IEnumerable<object>) { return (obj as IEnumerable<object>).Any(); } } return false; } 如果我传入一个类型为List< string>的对象,但是如果我传入一个类型为List< int>的对象,则无效.它失败了因为因为obj是IEnumerable< object>返回false. 知道如何让所有通用的IEnumerables工作吗? 解决方法
由于类型可能是未知的,您可以尝试检查IEnumerable接口并在枚举器上使用MoveNext().
编辑:我更新了方法名称.由于原始问题代码检查集合中是否有项目,因此现在使用逻辑更有意义. public bool IsNotNullOrEmpty(object enumerable) { if (enumerable != null) { if (enumerable is IEnumerable) { using(var enumerator = ((IEnumerable)enumerable).GetEnumerator()) return enumerator.MoveNext(); } } return false; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |