string[] 配列を反復処理し、いくつかのオブジェクトをリストに追加する関数を作成しています。セーブドゲームシステムのロードの一部です。テストする前にたくさんのコードを書いたので、まだたくさんのバグがあります。しかし、このデバッグ段階で、説明も修正もできない奇妙なバグを見つけました。
一部のデータにアクセスできません。元のコードがある場合、for ループの反復回数は必要な回数よりも 1 回少なくなります。イテレータ制限に +1 を追加すると、正常に動作します。結論として、-1 回または +1 回反復できますが、必要な回数ではありません。
これは元のコードで、反復回数が予想よりも 1 回少なくなります。
string str = " start at " + Convert.ToInt32(s[k]) + " " + k;
for (int i = 0; i < Convert.ToInt32(s[k]); i++)
{
k++;
landOwned.Add(setle.civil.land[Convert.ToInt32(s[k]), Convert.ToInt32(s[k+1])]);
k++;
str += " iteration "+i + " finish " + k;
}
throw new ArgumentException(str);
これは、テキスト ファイルの行です。
f 4894 0 250 -523058 0 0 0 0 0 0 0 0 0 0 0 0 0 35 35 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 3 4 2 4 3 3 4 4 1 0 1 0 1 0 1 2
キャッチされた例外のスクリーンショットは次のとおりです。