【C#】startIndex には文字列の長さより小さい値を指定してください。の解決方法【System.ArgumentOutOfRangeException】

C#,エラー/例外

C#で発生するエラー(例外)
System.ArgumentOutOfRangeException: startIndex には文字列の長さより小さい値を指定してください。

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

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

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

C# startIndex には文字列の長さより小さい値を指定してください。のエラーの原因

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

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

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

上記の「text」文字列の長さが6文字にも関わらず、Remove()メソッドの引数が「10文字」定義してしまっています。※Remove()は「指定された文字数を削除したい」時に使用されます。
Remove()メソッドの詳しい使い方はこちらから

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

ArgumentOutOfRangeExceptionのエラーイメージ

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

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


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

C# startIndex には文字列の長さより小さい値を指定してください。エラーの解決方法

System.ArgumentOutOfRangeException: startIndex には文字列の長さより小さい値を指定してください。のエラーを解決する方法をご紹介します。

①引数の値を範囲内の値にする

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

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

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

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

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

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

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



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

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

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

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

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

C#,エラー/例外

Posted by 9noike