0

これは学校の課題用です。

私自身と私のグループパートナーは、同じ配列内の別のインデックスに値を移動できるかどうか疑問に思っていますか?

4

5 に答える 5

4

もちろん。

var temp = array[i];
array[i] = array[j];
array[j] = temp;
于 2013-02-09T19:54:20.103 に答える
1

もちろんできます。

var array= new int[]{1, 2, 3};
foreach (var i in array)
{
    Console.WriteLine (i);
}

array[1] = array[2];

foreach (var j in array)
{
    Console.WriteLine (j);
}

結果は次のようになります。

1 2 3
1 3 3

ここに がありDEMOます。

しかしもちろん、これはある値から別の値への値の対処になります。古いインデックス値は新しいインデックス値に移動されます。値を変更したい場合は、Daniel's answer のtempような値を使用できます。

于 2013-02-09T20:01:17.367 に答える
1

C# で値を移動することは、たとえばオレンジを冷蔵庫からテーブルに移動することとは大きく異なります。つまり、オレンジをある場所から別の場所に移動すると、古い場所にはオレンジが含まれなくなります。

一方、配列内のアイテムの移動は、基本的に*をコピーする行為なので、次のように記述できます。

myArray[newIndex] = myArray[oldIndex];

これで、古いインデックスの項目が新しいインデックスに移動されました。古いインデックスにもアイテムが含まれています。それが発生したくない場合は、アイテムを別のものに置き換えて明示的に「削除」する必要があります。参照オブジェクトの配列では、次のように置き換えますnull

myArray[oldIndex] = null;

値オブジェクトの配列では、「なし」として指定する特別な値に置き換えるnullか、値オブジェクトが null 許容の場合に置き換えます。


*コピーするものは、配列要素の型によって異なります。値型の配列では、アイテム自体がコピーされます。参照型の配列では、参照がコピーされます。オレンジの類推を続けると、オレンジが参照型である場合、オレンジの配列は、配列内のすべてのオレンジの位置を定義する付箋のリストです。オレンジを配列に移動する代わりに、「右から 3 番目のオレンジ」と書かれたポストイットを置き、オレンジを所定の位置に残します。参照オブジェクトをコピーすると、付箋がコピーされるだけです。

于 2013-02-09T20:01:41.890 に答える
0

コピーは単純です

array[Index+1] = array[Index]

スワップは

var tmp = array[Index + 1];
array[Index+1] = arry[Index];
array[Index] = tmp;

うまく移動するかどうかは、移動したアイテムを何に置き換えて、空になったことを示すかによって異なります。

array[Index+1] = array[Index];
array[Index] = -1;
于 2013-02-09T20:05:59.553 に答える
0

アレイをスタッカー トレイと考えてください。物をそこに入れたり、物を動かしたりできますが、物をある引き出しや別の引き出しに入れても、他のものの順序には影響しません。

配列を使用するのではなく、リストを使用できます

        List<int> myList = new List<int>();
        myList.Add(1);
        myList.Add(2);
        myList.Add(3);
        myList.Add(4);
        myList.Add(5);

1,2,3,4,5が得られます。

それから呼び出す

    int temp = myList[1];
    myList.RemoveAt(1);
    myList.Insert(3, temp);

あなたに1,3,4,2,5を与えるでしょう

于 2013-02-09T20:09:14.277 に答える