【C#】startIndex に文字列の長さより大きい値を指定することはできません。の解決方法【System.ArgumentOutOfRangeException】

C#,エラー/例外

ArgumentOutOfRangeExceptionの解決方法を解説

C#で発生するエラー(例外)
System.ArgumentOutOfRangeException: startIndex に文字列の長さより大きい値を指定することはできません。

上記のエラー(例外)が発生したときの解決方法をご紹介します。

下記にC#で発生する例外処理の一覧をまとめていますので解決できない場合は合わせてご確認ください。
⇒例外処理クラス一覧まとめ【原因と解決方法】

C#のおすすめ講座を受講して、最短1週間でC#をマスターしよう!
⇒C#が学べるおすすめプログラミングスクール&オンライン講座11選

C# startIndex に文字列の長さより大きい値を指定することはできません。のエラーの原因

System.ArgumentOutOfRangeException: startIndex に文字列の長さより大きい値を指定することはできません。
のエラーの原因は
呼び出されたメソッドで定義されている許容範囲外の値が渡された
からです。

エラーコードの例を見て具体的に確認してみましょう。

String text = "エラーが発生";
// 文字列の長さの範囲外の値を引数にする
text.Substring(10);

上記の「text」文字列の長さが6文字にも関わらず、substring()の引数が「10文字」定義してしまっています。※Substring()メソッドは「部分文字列を取得」するために使用されます。
Substring()メソッドの詳しい使い方はこちらから


上記エラーのイメージはこちらです。

  ArgumentOutOfRangeExceptionのイメージ

定義した文字列の長さ以上の文字数を取りだそうするとエラーになります。

“文字列".Substring(引数) → 左記の引数が文字列の長さ以上にならないように注意
(文字列の長さ >= 引数)


今回はSubstring()メソッドを例に解説しましたが、
他のメソッドでも発生する可能性があるので注意しましょう。
「System.ArgumentOutOfRangeException:」の詳細はこちらから


C# startIndex に文字列の長さより大きい値を指定することはできません。エラーの解決方法

System.NullReferenceException:startIndex に文字列の長さより大きい値を指定することはできません。のエラーを解決する方法をご紹介します。

①引数の値を範囲内の値(文字列の長さ以下)にする

String text = "エラーが発生";
text.Substring(5);// 文字列の長さの範囲内の値にする

Substring(引数)の引数の値をtextの長さ以内に変更するとエラーは解消されます。

より良いコードを書くために

より良いコードを書くために
Stringの.Lengthメソッド
を使いましょう。
※Lengthメソッドの使い方はこちら

String text = "エラーが発生";
text.Substring(text.Length);// .Lengthメソッドを使う

Lengthメソッドを実装すると「変更に強いコード」にすることができます。

引数を別の値に変更するだけだと、別の処理で文字の長さが変更されると、エラーが発生します。注意してください。大規模なシステム開発などでバグが発生しやすい「変更に弱いコード」になってしまいます。
変更に強いコードを目指しましょう。



エラーを解決できなくて途方に暮れている人へ。

■無料プログラミング講座を開設しています!
下記にVisual Studioを使ったC#プログラミング初心者向け完全ガイドを掲載しています。

このガイドを一通り勉強すれば、C#プログラミングの基礎が学べます。
是非チャレンジしてみてください!

C#初心者向けに始め方ガイドを作成しています。
筆者

プログラミング初心者の方はぜひチャレンジしてみてください!!

C#,エラー/例外

Posted by 9noike