4

C#でString.Formatに渡される引数の数に不一致がある場合に、カスタムコンパイル時エラーを追加する方法はありますか?

例えば:

String.Format("{0} and {1} are my pets", animal);

"animal"上記の行は、2つの引数を期待しているのに、1つの引数しか渡していないため、エラーをスローするはず{0},{1}ですが、実際には、実行時エラーのみをスローします。

4

5 に答える 5

4

FxCop /CodeAnalysisがこれを検出します。はい、VS Premium/Ultimateではコンパイル時にそれを行うことができます。

ここに画像の説明を入力してください

于 2012-04-27T12:10:17.977 に答える
3

ResharperはそのためのIDE警告を追加します。ただし、これはコンパイラエラーではありません。コンパイラに関する限り、あなたが書いたものは完全に問題ありません。

ここに画像の説明を入力してください

于 2012-04-27T12:10:03.317 に答える
1

カスタムコンパイル時エラーを追加することはできません。その論理エラーであり、例外

Editをスローします。

Console.WriteLine(string.Format("test{0} and {1}","test"));

それは投げます:

インデックス(ゼロベース)は、ゼロ以上で引数リストのサイズ未満である必要があります

于 2012-04-27T12:10:44.510 に答える
1

Format1これはひどい考えですが、、などと呼ばれる5つほどの拡張メソッドを作成しFormat2、パラメータをハードコーディングして通常のに渡すことができますString.Format

于 2012-04-27T14:29:01.923 に答える
0

フォーマット文字列は、.NETクラスライブラリの特定のメソッドの機能です。コンパイラはそれらについて何も知りません。コンパイラーは、特定のライブラリー関数を呼び出す方法ではなく、言語自体に関係することに関してのみエラーをスローできます。

于 2012-04-27T12:16:26.337 に答える