gpt4 book ai didi

c# - 如何在 C# 中创建一个真正不可变的双向链表?

转载 作者:太空狗 更新时间:2023-10-29 20:55:07 25 4
gpt4 key购买 nike

这更像是一个理论问题:是否可以通过任何方式在 C# 中创建一个真正不可变的双向链表?我看到的一个问题是 2 个相邻节点的相互依赖。

“真正”是指使用只读字段。

最佳答案

这可能与棘手的构造函数逻辑有关。例如

public sealed class Node<T> { 
readonly T m_data;
readonly Node<T> m_prev;
readonly Node<T> m_next;

// Data, Next, Prev accessors omitted for brevity

public Node(T data, Node<T> prev, IEnumerator<T> rest) {
m_data = data;
m_prev = prev;
if (rest.MoveNext()) {
m_next = new Node(rest.Current, this, rest);
}
}
}

public static class Node {
public static Node<T> Create<T>(IEnumerable<T> enumerable) {
using (var enumerator = enumerable.GetEnumerator()) {
if (!enumerator.MoveNext()) {
return null;
}
return new Node(enumerator.Current, null, enumerator);
}
}
}

Node<string> list = Node.Create(new [] { "a", "b", "c", "d" });

关于c# - 如何在 C# 中创建一个真正不可变的双向链表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10757378/

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