- ベストアンサー
C#配列について
プログラム初心者ですがC#(VS)で以下のプログラムを書いています。 ・ ・ ・ string[,] box = string[3,3]; for(n = o; n<= 3;n++) box[n,o]= a; と書いたときに「バンドルされていない例外が発生しました。・・・」 とアラートがでて正常に動きません。 box[1,0]=a; としたときは正常に動作します。 上記アラートを解決する方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
日がたってしまったので解決したでしょうか。 先の回答や補足を参考にして試してみましたが現象は確認できませんでした。 a と n の定義がどのようになっているのかわからないので適当に用意したのと、boxの定義はエラーになったので new を付けています。 ---- int n; string a = ""; string[,] box = new string[3, 3]; for (n = 0; n < 3; n++) box[n, 0] = a; ---- box[1,0]=a; としたときは正常とのことですが、例外発生はここではないと思うので、もう少し情報があると助かります。
その他の回答 (2)
- iijijii
- ベストアンサー率55% (576/1038)
for(n = 0; n <= 3; n++) ↓ for(n = 0; n < 3; n++) string[,] box = string[3,3]; これは3個*3個の入れ物を作りなさいって意味です。 ですから使える添字それぞれは0,1,2の3つです。 それと、「バンドルされていない例外が発生しました。」 に続くメッセージが重要です。
お礼
回答ありがとうございました。
補足
回答ありがとうございます。 返信が遅れましたことお詫びします。 アラートメッセージの続きですが「インデックスが配列の境界外です。」と出ています。 何かお分かりになられましたらご教授をお願いいたします。
- redslove10
- ベストアンサー率41% (397/968)
o は 0 の間違いでは?
補足
redslove10様 以下回答ありがとうございます。 oと0は質問文章への書き間違いでした。 oはすべて0の間違いです。 失礼しました。
お礼
dell OK様 ありがとうございました。
補足
dell_OK様 回答並びにテストありがとうございました。 OKWAVEのやさしさに甘えて気軽に投稿していたのですが、質問が中途半端で回答者様にご迷惑をおかけしたことを反省しております。 実は質問時に記載した配列の前に while文を使ってその直後に 二次配列の初期化(string[,] box = new string[3,3]; を実行していました。 つまりwhileがbreakするあいだ毎回配列が初期化されている状態でした。 初期化をwhileの前に行う事で意図した配列へのデータ設定がおこなえました。 本当に失礼いたしました。 今後質問をするときは今一度考えて最低限のコマンド位置とコマンドの意味を理解してから質問させていただくようにいたします。 ありがとうございました。