3

リンク リストといくつかのノードを作成しました。これらのノードをリンクしたいのですが、このエラー メッセージが表示され続けました。

" プロパティまたはインデクサー System.Collections.Generic.LinkedListNode<>.Next を割り当てることはできません。読み取り専用です。 "

        var link = new LinkedList<int>();
        var node1 = new LinkedListNode<int>(1);
        var node2 = new LinkedListNode<int>(2);
        var node3 = new LinkedListNode<int>(3);

        link.AddFirst(node1);
        link.AddFirst(node2);
        link.AddFirst(node3);

        node1.Next = node2;  ---> .next is read only
        node2.Next = node3;  ---> .next is read only
4

3 に答える 3

7

リストのAddAfterまたはAddBeforeメソッドを使用する必要があります。これらを使用すると、特定のアイテムの直前または直後にアイテムを挿入できます。

残念ながら、.NET のクラスではアクセサがないため、 プロパティとプロパティを直接LinkedListNode<T>変更することはできません。NextPreviousset

リストの順序を変更する場合は、 Removeメソッドを使用して、項目を以前の位置から削除する必要もあります。次のフォームをお勧めします。

LinkedListItem<T> foo = /*fetch your item here*/
LinkedListItem<T> bar = /*the one to come right after foo,
    as a result of running the code*/
list.Remove(foo);
list.AddBefore(bar, foo);

前に挿入するのではなく、後に挿入するように変更できます。

于 2013-07-05T21:09:51.880 に答える