我不得不处理从我无法控制的数据源向我的应用程序抛出的数据集合。其中一些集合包含空值,我宁愿在它们命中我的代码时立即过滤掉它们,而不是将空值检查代码分散在各处。我想以可重用的通用方式执行此操作,并编写了此方法来执行此操作:
public static void RemoveNulls<T>(this IList<T> collection) where T : class
{
for (var i = 0; i < collection.Count(); i++)
{
if (collection[i] == null)
collection.RemoveAt(i);
}
}
我知道在具体的 List 类中有RemoveAll()
可以使用的方法,例如:
collection.RemoveAll(x => x == null);
但是很多返回类型是基于接口的(IList/IList ...)而不是具体类型。