1. ホーム
  2. vb.net

[解決済み] インデックスが配列の範囲外であった

2022-02-15 22:59:20

質問

このエラーメッセージがランダムに表示されるのですが。

<ブロッククオート

インデックスが配列の境界の外にあります。

そして、この行を指しています。

Dim placename As String = RichTextBox1.Lines(0)

解決方法は?

つまり、あなたの RichTextBox1 には行がありません。と置き換えてください。

Dim placename As String
If RichTextBox1.Lines.Count() > 0 Then
    placename=RichTextBox1.Lines(0)
Else
    placename = String.Empty
End if

詳細はこちら
配列を道に見立て、配列の各要素を家に見立てたとします。30軒の家があるとして、20番の家を探すには、最初(1)から始めて20番に達するまで上に行く。配列の場合、1ではなく0から始まるので、30個の要素を持つ配列には0から29までのインデックスが含まれます。ここで、通りの例えに戻ります。私が通りを歩いていて、31番の家を尋ねたとします。家は30軒しかないので、その家は存在しません。これは事実上、プログラムがあなたに伝えていることなのです。これは、「あなたが頼んだ家に辿り着くには、配列の中の要素が足りません」と言っているのです。つまり、あなたは「最初の行をください」と言いながら、行の配列の要素0を要求したのです。ここで、テキストボックスの行数が0行の場合、最初の行は存在しないので、このエラーが発生します。