Как получить определенный индекс или цикл через эту структуру данных?Looping IEnumerable
public class Path<TNode> : IEnumerable<TNode>
{
public TNode LastStep { get; private set; }
public Path<TNode> PreviousSteps { get; private set; }
public double TotalCost { get; private set; }
private Path(TNode lastStep, Path<TNode> previousSteps, double totalCost)
{
LastStep = lastStep;
PreviousSteps = previousSteps;
TotalCost = totalCost;
}
public Path(TNode start) : this(start, null, 0) { }
public Path<TNode> AddStep(TNode step, double stepCost)
{
return new Path<TNode>(step, this, TotalCost + stepCost);
}
public IEnumerator<TNode> GetEnumerator()
{
for (Path<TNode> p = this; p != null; p = p.PreviousSteps)
yield return p.LastStep;
}
IEnumerator IEnumerable.GetEnumerator()
{
return this.GetEnumerator();
}
}
Используется как график для алгоритма A *. Я хочу сделать 2 вещи с этой структурой данных:
- Сформировать график (добавить узлы и их детей)
- Уметь пересечь его и найти узел и получить свой конкретный индекс, как:
Path<Vector2> node;
затем быть в состоянии сделатьnode[0]
.
Этот код выглядит очень знакомо http://blogs.msdn.com/ b/ericlippert/archive/2007/10/04/path-find-using-a-in-c-3-0-part-two.aspx –
Ya, его же код. –
Я думаю, что блог был частью серии из четырех частей. Любой шанс, что Эрик упоминает, что вы ищете в остальной части серии? Я признаю, что я слишком ленив, чтобы выглядеть сам. Я буду обвинять его в праздниках;) –