如何检查Slime类实例列表中所有hasHit布尔值是否为true?
检查List中所有实例的hasHit是否全为true
使用Enumerable.All(最简洁的方式)
Enumerable.All并非只能用于布尔类型的集合,它的核心是接收一段判断逻辑,对集合里的每个元素执行该逻辑,只有当所有元素都满足逻辑时才返回true。针对你的场景,只需要通过lambda表达式取出每个Slime的hasHit属性即可:
// 记得先引用Linq命名空间 using System.Linq; bool allSlimesHit = slime.All(slimeInstance => slimeInstance.hasHit);
这里的slimeInstance是对列表中每个Slime实例的指代,也可以简化成s,写法更短:slime.All(s => s.hasHit)。只要有任意一个Slime的hasHit为false,这个方法就会立刻返回false,不会继续遍历剩余元素,效率和手动循环一致。
手动循环实现(foreach/for)
如果你更习惯用循环,这两种写法也能达到目的:
foreach版本
bool allSlimesHit = true; foreach (var s in slime) { if (!s.hasHit) { allSlimesHit = false; break; // 找到不符合的就终止循环,避免多余遍历 } }
for版本
bool allSlimesHit = true; for (int i = 0; i < slime.Count; i++) { if (!slime[i].hasHit) { allSlimesHit = false; break; } }
内容的提问来源于stack exchange,提问作者JMAS
相关产品推荐
相关产品推荐

