Pages

2016/03/29

インデックス0ベースは0以上で引数リストのサイズよりも小さくなければなりません

インデックス0ベースは0以上で引数リストのサイズよりも小さくなければなりません
C#で文字列を扱う際に多用するエラーです。String.Format は 0 からスタートします。

String.Format メソッド

C# の String.Format メソッドは、文字列を整形したい時に多用するメソッドです。しかし、これは見た目で間違いに気づかない場合もあり、また、ミスっていても実行時までエラーに気づかないという欠点がありました。
int len = 50;
// これは例外。
string hoge = string.Format("名前は{1}文字以内で入力してください。", len);
// インデックスは 0 からスタート。
string hoge2 = string.Format("名前は{0}文字以内で入力してください。", len);

C#6.0の文字列補完

C# 6.0 となり、ようやくこれが改善されました。
int len = 50;
// C#6.0からはこう書けます。
string hoge2 = $"名前は{len}文字以内で入力してください。";

直感的かつ簡潔な書き方になりました。
今までのコードも全部リファクタリングしたいくらいですね!
Related Posts Plugin for WordPress, Blogger...