gpt4 book ai didi

c# - 为什么 LinkedListNode Next 属性是只读的?

转载 作者:行者123 更新时间:2023-12-02 17:10:28 25 4
gpt4 key购买 nike

我一直在使用 C# 解决 LeetCode 问题,并且在尝试将 linkedlistnode 的下一个值设置为新节点时注意到一个问题,即 'property or indexer ......Next cannot be分配给 -- 它是只读的'。我可以从节点的下一个读取,但不能将一个节点分配给一个节点的下一个。为什么 .NET 会出现这种情况?

var l1Value = l1 == null ? 0 : l1.Value;
var l2Value = l2 == null ? 0 : l2.Value;
var newNode = new LinkedListNode<int>((l1Value + l2Value + overflow) % 10);
start.Next = newNode; <------ red squiggly
start = start.Next; <------ no red squiggly

最佳答案

你应该使用 AddBefore/AddAfter/AddFirst/AddLast LinkedList 上的方法将元素添加到列表中。

我不知道 100% 但我假设 API 表面不允许您修改 Next LinkedListNode 的元素因为那会让你最终得到奇怪的东西,比如循环、不完整的列表等。主要是造成不一致状态的东西。文档说 LinkedList不支持:

The LinkedList<T> class does not support chaining, splitting, cycles, or other features that can leave the list in an inconsistent state. The list remains consistent on a single thread. The only multithreaded scenario supported by LinkedList<T> is multithreaded read operations.

而不是暴露低电平Next/Previous setter 的属性作者决定最好提供方法来完成常见的插入/删除操作并确保所有正确的事情发生。例如。他们确保NextPrevious在每次插入/删除时得到更新。如果他们允许你修改 NextPrevious直接不可能确保两者在必要时总是更新。您仍然可以完成您需要的操作,但是当人们自己实现这些操作时,它们限制了出现错误的可能性。

关于c# - 为什么 LinkedListNode Next 属性是只读的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49591213/

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