none
VS2017 「オブジェクトの初期化を簡略化できます」警告を非表示にする方法 RRS feed

  • 質問

  • 「オブジェクトの初期化を簡略化できます」警告を非表示にできませんか?

    Dim li1 As ListBoxItem

    li1 = New ListBoxItem ’この行で警告が表示される。何も悪いことはしていないと思うが。

    御回答をお願い致します。

    2018年9月15日 7:22

回答

  • Visual BasicではVisual Studio 2008でのLINQ対応の際、オブジェクト初期化子コレクション初期化子の機能が追加されました。その上でVisual Studio 2017(たぶん)からコードのスタイル設定で書式を制御できるようになりました。お好みの設定にカスタマイズするといいでしょう。
    • 回答としてマーク huahi11112 2018年9月18日 3:03
    2018年9月15日 22:19
  • プロジェクト全体でその警告を出ないようにするのであれば、プロジェクトのプロパティにあるコード分析を選んで、規則セットの開くをクリックして、表示されたページの右上にある検索ボックスに"初期化"と入力して、一覧にの中のIDE0017のチェックボックスを外します。

    この行でのみでよいのであれば

    Dim li1 As ListBoxItem
    #Disable Warning IDE0017 ' オブジェクトの初期化を簡略化します
    li1 = New ListBoxItem 'この行で警告が表示される。何も悪いことはしていないと思うが。
    #Enable Warning IDE0017 ' オブジェクトの初期化を簡略化します
    とやってやれば表示されなくなります。
    この方法は警告の出ている行の左端に表示される電球マークをクリックすると出る「IDE0017の非表示」という項目を選んで、ソース内に適用すれば自動でやってくれます。
    ファイル単位でならDisable Warningをファイル先頭に記述してやれます



    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 編集済み gekkaMVP 2018年9月15日 11:06
    • 回答としてマーク huahi11112 2018年9月18日 3:03
    2018年9月15日 11:03

すべての返信

  • プロジェクト全体でその警告を出ないようにするのであれば、プロジェクトのプロパティにあるコード分析を選んで、規則セットの開くをクリックして、表示されたページの右上にある検索ボックスに"初期化"と入力して、一覧にの中のIDE0017のチェックボックスを外します。

    この行でのみでよいのであれば

    Dim li1 As ListBoxItem
    #Disable Warning IDE0017 ' オブジェクトの初期化を簡略化します
    li1 = New ListBoxItem 'この行で警告が表示される。何も悪いことはしていないと思うが。
    #Enable Warning IDE0017 ' オブジェクトの初期化を簡略化します
    とやってやれば表示されなくなります。
    この方法は警告の出ている行の左端に表示される電球マークをクリックすると出る「IDE0017の非表示」という項目を選んで、ソース内に適用すれば自動でやってくれます。
    ファイル単位でならDisable Warningをファイル先頭に記述してやれます



    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 編集済み gekkaMVP 2018年9月15日 11:06
    • 回答としてマーク huahi11112 2018年9月18日 3:03
    2018年9月15日 11:03
  • 悪いことはしていませんが、おそらく次のように書くことを勧めているのでしょう。

    Dim li1 As New ListBoxItem


    ★良い回答には質問者は回答済みマークを、閲覧者は投票を!

    2018年9月15日 13:59
    モデレータ
  • Visual BasicではVisual Studio 2008でのLINQ対応の際、オブジェクト初期化子コレクション初期化子の機能が追加されました。その上でVisual Studio 2017(たぶん)からコードのスタイル設定で書式を制御できるようになりました。お好みの設定にカスタマイズするといいでしょう。
    • 回答としてマーク huahi11112 2018年9月18日 3:03
    2018年9月15日 22:19
  • 佐祐理さんの「オブジェクト初期化子」のリンク内容が参考になりました。

    newステートメントにはwithを付けなければならない。これが最新の文法なのだということですね。

    皆様、御回答誠にありがとうございました。

    2018年9月18日 3:05
  • 少し補足で、

    最新というよりは10年前の新機能です。今回、コードの修正・提案を行う機能が強化されたために目につくようになっただけのことです。多くのプログラミング言語では式;expression文;statementの2種類の概念があります。リンクした通りVBにもあります。そして文で書くより式で書く方がシンプルに表現できるため、それを支援する機能が今回のオブジェクト初期化子とコレクション初期化子です。

    先にもコメントした通り使わなければならないというものではありません。VBではあまり違いを感じられないかもしれませんので、使うかどうかは開発者個人の自由とコメントします。一方C#では絶大な効果を持っているため、C#で書く際は使用を推奨します。

    2018年9月18日 4:01