为什么LinkedListNode类是不可变的?

Paw*_*hra 6 .net c# linked-list

我很想知道为什么LinkedListNode类暴露的所有属性(Next,Previous,Value等)都是只读的,即这些属性没有相应的setter?

我试图解决一个小的链表相关的算法问题,并决定使用.Net的内置LinkedList类.但是由于LinkedListNode的类属性的只读行为,我无法覆盖值或更改任何给定节点的"Next"指针.

谢谢

Ben*_*igt 6

Value确实有一个二传手,声明是public T Value { get; set; }.

缺少setter NextPrevious阻止您将链接列表转换为树或其他LinkedList方法未设计应对的拓扑.

LinkedList类不支持链接,拆分,循环或其他可能使列表处于不一致状态的功能.

您可以使用列表的方法更改这些属性,例如AddBefore保留不变量,每个变量LinkedListNode只是一个列表的成员,node.Next.Previous始终指向node,并且没有循环等.

  • 这可能是您无法更改"Next"或"Previous"属性的原因.更改值不会将列表更改为树. (3认同)