2017-12-01 10 views
0

Integer Arrayに1つのIntegerを追加するにはどうすればよいですか?C#の整数配列に値を追加

if (valuesHigherThanAverage.Length == 0) valuesHigherThanAverage[valuesHigherThanAverage.Length] = arrayGetal; 
else valuesHigherThanAverage[valuesHigherThanAverage.Length + 1] = arrayGetal; 

私はこのコードを持っており、foreachループでも試してみましたが、うまくいきませんでした。そして、私はINT []を使う必要があり、Listを使うことはできません。

+2

配列の長さで新しい配列を作成することができます。 – tkausl

+0

'List <> 'を使用できない場合は、1要素の大きさの新しい配列を作成し、古い配列を割り当て、最後の要素に新しい値を割り当てます。 – FCin

+0

'ArrayList'クラスを参照してください。必要に応じて簡単に通常の配列に変換できます。 – i486

答えて

3

新しい項目を配列に追加することはできません。サイズ+ 1の新しい配列を作成し、既存の値をすべてコピーしてから、最後の項目値を設定する必要があります。

さらに簡単な方法は、List<int>を使用することです。これは、領域が足りなくなると自動的にサイズが変更されます。 Addメソッドを呼び出すだけで十分です。ここで

配列リサイズアルゴリズム(Array.Resizeはこれを自動化することができますが、これはちょうどそれがどのように動作するかをお見せすることがある)のサンプル:あなたはvaluesHigherThanAverage.Length + 1のような配列のサイズを変更することはできません

int[] oldItems = new int[] { 1, 2, 3 }; 

int[] newItems = new int[oldItems.Length * 2]; 

for (int i = 0; i < oldItems.Length; i++) 
{ 
    newItems[i] = oldItems[i]; 
} 

newItems[oldItems.Length + 1] = 4; 
+0

1だけでなく、もう少し大きくすることをお勧めします。正確な数字は、リストの実装によって "インスピレーション"されている可能性がありますか? – Fildor

+1

実際、 '* 2'を使用します。 –

0

。固定サイズです。あなたは配列の上限を超えています。

0

新しい要素が追加されたときに配列が拡張されるようには設計されていません。サイズを増やすにはArray.Resize(Of T)に電話する必要がありますが、これは非常に非効率的です。

データタイプは、あなたがやりたいと思っている行がList<T>です。

0

あなたは固定サイズを持っている古い配列+ 1

public static int[] AddIntToArray(int[] sourceArray, int addValue) 
{ 
    int[] newArray = new int[sourceArray.Length + 1]; 
    Array.Copy(sourceArray, newArray, sourceArray.Length); 
    newArray[newArray.Length] = addValue; 
    return newArray; 
} 
関連する問題