我有这个功能:
class Path : List<LineSegment> { }
private IEnumerable<LineSegment> GetLineSegments(CollisionType collisionType, Path path)
{
if (collisionType == CollisionType.End)
{
yield return path.First();
yield return path.Last();
}
else if (collisionType == CollisionType.Segment)
{
foreach (LineSegment lineSegment in path)
{
yield return lineSegment;
}
}
}
基本上,我是以两种方式检查碰撞(球与线之间)。在一种情况下,我只想检查绘制路径的端点,但在另一种情况下,我想返回整个路径中的每个线段。
循环遍历给定列表只是为了返回整个列表似乎有点奇怪。我可以退回清单吗?我希望能够做到这样的事情,但我遇到了错误:
private IEnumerable<LineSegment> GetLineSegments(CollisionType collisionType, Path path)
{
if (collisionType == CollisionType.End)
{
yield return path.First();
yield return path.Last();
}
else if (collisionType == CollisionType.Segment)
{
return path.AsEnumerable<LineSegment>();
}
}
答案 0 :(得分:3)
您别无选择,只能使用foreach
循环。它是一个经常被请求的功能,但不是语言中的功能。