2016-06-14 14 views
-9

誰かがこの問題を解決できますか? だから、ライン70と75で、私は、配列に新しい値を置くが、私はこのエラーを得た:C#構造体の文字列をファイルに保存するエラー

Unhandled Exception: System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Application.Main() <0x41237d50 + 0x00729> in :0
[ERROR] FATAL UNHANDLED EXCEPTION: System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Application.Main() <0x41237d50 + 0x00729> in :0

コード:

http://pastebin.com/YtEv8Afk

感謝を!

+1

70行と75行で何が書かれているのか推測しますか? –

+2

あなたのコードと、達成しようとしていることについてのいくつかの文章を追加してください。また、適切な書式設定を検討してください。これはちょうど読めません。 –

+0

コードを追加しました。申し訳ありません –

答えて

0

あなたが例外を取得する場所にあなたのコードは:

num_players = num_players + 1; 
Array.Resize(ref players, num_players); 
players[num_players].Name = s; 

リサイズ文は、0からNUM_PLAYERS人-1までのインデックスを持つ配列にあなたの配列のサイズを変更します。使用できる最も高いインデックスはnum_playes-1です。

プレーヤー[num_players]にアクセスしようとすると例外が発生することがあります。

アレイのサイズ変更は、非常に高価な操作です。多くの場合、配列のサイズが変わらないことが確実である場合は、配列のみを使用することをお勧めします。それ以外の場合は、List < Players>を使用してください。サイズを変更する必要はなく、要素を追加するだけでリストの最後に追加されます。私はあなたのコードで奇妙なものを見るところで

for(int k = 0; k == num_players; k--) 
{ 
    players[k] = players[k + 1]; 
} 

ですから、K = 0で始まります。あなたのものを行い、k ----を与え、k == -1の値を与えます。私はあなたがやろうとしていることはほとんど信じていません。

関連する問題