假设 ienumerable 不为空,如果该 ienumerable 为空,则 foreach 循环将不会执行。但是,如果集合为空,我需要运行其他代码。这是完美运行的示例代码:
List<string> theList = new List<string>() {};
if (theList.Count > 0) {
foreach (var item in theList) {
//do stuff
}
} else {
//throw exception or do whatever else
}
有没有办法通过开箱即用的 C#、扩展方法等来缩短它?在我的脑海中,我认为以下内容会很酷,但显然它不起作用:
List<string> theList = new List<string>() {};
foreach (var item in theList) {
//do stuff
} else {
//throw exception or do whatever else
}
编辑:感谢 Maarten 的见解,我的解决方案:如果集合为空或为空,以下将引发异常(如果您想简单地忽略集合为空或空的情况,请在 foreach 中使用三元运算符)
static class Extension {
public static IEnumerable<T> FailIfNullOrEmpty<T>(this IEnumerable<T> collection) {
if (collection == null || !collection.Any())
throw new Exception("Collection is null or empty");
return collection;
}
}
class Program {
List<string> theList = new List<string>() { "a" };
foreach (var item in theList.FailIfNullOrEmpty()) {
//do stuff
}
}