1

動的配列内のオブジェクトを単純に置き換えるための、より優れたデータ構造またはメソッドを探しています。リストが選択されているようですが、読んで、RemoveAt と Insert のパフォーマンスが期待したほど良くないことに気付きました。

私が達成しようとしていることについて詳しく説明しましょう。

リスト1

  1. リスト項目 1
  2. リスト項目 2
  3. リスト項目 3

リスト2

  1. リスト項目 1
  2. リスト項目 2
  3. ヌル

どちらのリストも同じオブジェクト タイプを使用しています。List2 の null リスト項目を List1[1] に置き換えたい -- リスト項目 1 のクローン。複製を使用するため、コピーされたリスト項目の値は別のインスタンスになります。

また、List2 のリスト項目 2 を List2 のリスト項目 1 のクローンに置き換えたいと考えています。

私が達成しようとしているもののコード例を次に示します。

projCraneVertices.RemoveAt(projCraneVertices.Count - 4);
projCraneVertices.Insert((projCraneVertices.Count - 3), realCraneVertices[botPoint].clone());
projCraneVertices.RemoveAt(projCraneVertices.Count - 3);
projCraneVertices.Insert((projCraneVertices.Count - 2), projCraneVertices[botPoint].clone());
projCraneVertices.RemoveAt(projCraneVertices.Count - 2);
projCraneVertices.Insert((projCraneVertices.Count - 1), realCraneVertices[topPoint].clone());
projCraneVertices.RemoveAt(projCraneVertices.Count - 1);
projCraneVertices.Insert((projCraneVertices.Count), projCraneVertices[topPoint].clone());
4

3 に答える 3

0

私が理解できることから、あなたはReplace方法が必要です。この拡張機能を試してください:

public static class Extensions
{
  public static void Replace<T>(this IList<T> list, int index, T item)
  {
    list[index] = item;
  }
}

次のように呼び出します:

  List<int> ints = new List<int>() { 1, 2, 3 };
  List<int> ints2 = new List<int>() { 4, 5, 6 };
  ints.Replace(0, ints2[0]);

上記は最初のリストを作成します- 4, 2, 3

于 2013-03-18T12:39:53.587 に答える
0

List of T を使用すると、removeAt の問題が解決され、内部では Array が使用され、これらのアノイング メソッドを取り除くのに役立ついくつかの優れた関数が公開されます。

以下のように、リストが提供する機能の一部を使用できます。

Replace // アイテムをあるアイテムから別のアイテムに置き換えます

Tクラス一覧

于 2013-03-18T13:54:13.637 に答える
0

また、List2 のリスト項目 2 を List2 のリスト項目 1 のクローンに置き換えたいと考えています。

さて、次のようにもっと簡単にできます。

proCraneVertices[2] =  realCraneVertices[1].Clone();
于 2013-03-18T12:42:02.213 に答える