gpt4 book ai didi

c# - 需要帮助在 C# 中为链表制作枚举器

转载 作者:行者123 更新时间:2023-11-30 12:10:58 25 4
gpt4 key购买 nike

我正在尝试采用我制作的自定义链接列表类,并制作一个枚举器以在我的一个 C# 程序中使用它。我不想展示太多我的代码,所以希望这就足够了。

我不确定,但这就是枚举器应该看起来的样子吗?

class SinglyLinkedListEnumerator<T> : IEnumerator<T>
{
private Node<E> node;
private Node<E> start;

public SinglyLinkedListEnumerator(Node<T> node)
{
this.node = node;
start = node;
}

public T Current
{
get { return node.getData(); }
}

public Boolean MoveNext()
{
if (node.getNext() != null)
{
node = node.getNext();
return true;
}
return false;
}

public void Reset()
{
node = start;
}

public void IDisposable.Dispose()
{
}
}

最佳答案

迭代器 block 创建了一个实现 IEnumerable<T> 的对象容易得多:

public static IEnumerable<T> Iterate<T>(Node<T> root)
{
var current = root;
while (current != null)
{
yield return current.getData();
current = current.getNext();
}
}

它删除了大部分样板代码,只允许您定义所有逻辑以确定序列中的节点是什么,同时仍然提供像您一样写出所有代码的所有功能。

关于c# - 需要帮助在 C# 中为链表制作枚举器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16724452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com