【发布时间】:2014-11-27 21:23:11
【问题描述】:
我有这个功能:
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>();
}
}
【问题讨论】:
标签: c# linq ienumerable yield