C# 为什么LinkedListNode下一个属性是只读的?

C# 为什么LinkedListNode下一个属性是只读的?,c#,C#,我一直在使用Visual Studio IDE解决LeetCode问题,并且在尝试将linkedlistnode的下一个值设置为新节点时注意到一个问题,即,“属性或索引器……下一个无法分配给--它是只读的”。我可以将节点的下一个分配给节点,但不能将节点分配给节点的下一个。为什么.NET会出现这种情况 var l1Value = l1 == null ? 0 : l1.Value; var l2Value = l2 == null ? 0 : l2.Value; var newNode = new

我一直在使用Visual Studio IDE解决LeetCode问题,并且在尝试将linkedlistnode的下一个值设置为新节点时注意到一个问题,即,“属性或索引器……下一个无法分配给--它是只读的”。我可以将节点的下一个分配给节点,但不能将节点分配给节点的下一个。为什么.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
var l1Value=l1==null?0:l1.值;
var l2Value=l2==null?0:l2.值;
var newNode=newlinkedListNode((l1Value+l2Value+overflow)%10);

start.Next=newNode
Next
属性只有从
LinkedListNode
返回下一项的getter

我想您正在寻找
start.List.AddLast(newNode)


希望有帮助,

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

我不知道100%,但我假设API表面不允许您修改
LinkedListNode
Next
元素,因为这样会导致奇怪的结果,如循环、不完整的列表等。主要是导致状态不一致的事情。文档中说,
LinkedList
不支持:

LinkedList类不支持链接、拆分、循环或其他可能使列表处于不一致状态的功能。列表在单个线程上保持一致。LinkedList所支持的唯一多线程方案是多线程读取操作


作者决定,与其使用setter公开低级的
Next
/
Previous
属性,不如提供方法来完成常见的插入/删除操作,并确保所有正确的操作都发生。例如,他们确保
Next
Previous
在每次插入/删除时都得到更新。如果它们允许您直接修改
下一个
上一个
,则无法确保在必要时始终更新这两个。您仍然可以完成所需的操作,但当人们自己实现这些操作时,它们限制了出现错误的可能性。

这是C#的惯例吗?我一直认为start.Next=newNode是在LinkedList中设置下一个节点的最佳方式,而不是在C#中设置下一个节点。应该使用AddLast()、AddBefore、AddAfter等来设置节点@不完全是春天。您应该执行
var list=new LinkedList
,以后当您想添加节点时,只需执行
list.AddFirst(5)
。与其抓住列表的头节点,不如抓住并使用
列表本身。Visual Studio是一个IDE,不是一个框架,也不是一种语言。它没有
LinkedListNode
,但.NET有一个。请使用正确的terms@CamiloTerevinto添加了IDE和.NET术语