C# 数组有一个带条件的元素
本文关键字:元素 条件 数组 有一个 | 更新日期: 2023-09-27 18:31:47
我有一个类MyClass,它有一个返回布尔值的方法MyFunction。 然后我有一个 MyClass 的数组 MyArray,如果这个数组有一个对象,我需要返回 true,其中 MyFunction 返回 true,我实际上使用这个:
bool MyOtherFunction () {
foreach (MyClass x in MyArray.Where(y => y.MyFunction))
{
return true;
}
return false;
}
但是Visual Studio不断警告我,因为"从未使用局部变量'x'",那么,如何在不声明新变量的情况下检查这一点?
您可以将函数的整个主体替换为
return MyArray.Any(x => x.MyFunction());
您当前的函数实质上是在过滤掉任何未从对 MyFunction 的调用中返回 true 的结果。如果有结果,您将开始枚举Where
筛选器的结果,并在第一项返回 true。如果没有结果,则没有要枚举的内容,并且您将返回 false。通过使用 LINQ 的 Any
方法,您将改为枚举,直到数组的 MyFunction
调用中的某个项返回 true,此时您将满足条件并且可以返回 true。如果MyFunction
是一个潜在的昂贵调用,这将比为数组中的每个可能元素执行函数要快得多,而您真正想要的只是在任何一个元素碰巧为真时返回。当然,如果它很昂贵,如果它们都返回 false,您将为每个元素执行它。