2017年8月27日日曜日

C# TIPS: IDE0017を回避する

■ Visual Studio がエラー窓に出すメッセージに、IDE0017というものがある。



たとえば次のようにWebClientを作るだけで、同メッセージが出てしまう。



何かコンストラクタ関係の助言らしいが、「オブジェクトの初期化を簡略化できます」だけじゃ意味がわからないんですよ。

■ ネットを見ると同様の疑問を持つ人が多数フォーラム等で質問しており、だいたいこんな回答をされている。
  • コードがバグってるんじゃね(いやバグってないし)
  • コンストラクタの用法が悪いと言われてるのだ(わかってるつーの)
  • 俺のコード参考にしてみ(お前のコードはWebClientじゃないだろ)
  • #pragma warning disable IDE0017」で消せるよ(いいのか?)

■ 自分でもコードをいじりつつ試行錯誤してみると、どうやら コンストラクタ呼び出しの直後にプロパティを代入する と、IDE0017が表示されることがわかった。

両者の間に空文1個でもはさめばメッセージは回避できる。たとえば次のコードならIDE0017は表示されない。



たぶんこれは、引数付きのコンストラクタを呼び出すことが推奨されているのだろう。でもWebClientには、Credentialsを指定できるコンストラクタなんかないし。いやあるのかもしれんが、このぐらい見逃してくださいよー。

■ というわけで、今後ネットでIDE0017に関する質問を見たら、「空文1個いれてみ」と答えることにしたい。

たぶん「そんな対症療法よくない」って反応が返ってくるだけだろうが(わかってるつーの)。

0 件のコメント:

コメントを投稿