我有一个 BaseTool 数组,我想返回 T 类型的第一个元素:
public BaseTool GetTool<T>() where T : BaseTool
{
foreach (var tool in tools)
{
if (tool is T)
{
return tool;
}
}
return null;
}
Rider 建议我改用 LINQ 方法:
public BaseTool GetTool<T>() where T : BaseTool
{
return tools.OfType<T>().FirstOrDefault();
}
我想知道这两个实现是否会执行相同的操作。基本循环变体在找到第一个 T 实例时返回。我知道 OfType 使用延迟执行。但我不确定上述与 FirstOrDefault 的组合是否会导致对整个数组的 OfType 评估。