none
IntelliSenseの状態がよくありません。 RRS feed

  • 質問

  • いつもなら、たとえば 「a.」と入力するとインテリセンスで候補が出るのですが、限られていて、「Equals,GetHashCode,GetType,Tostring」の4つしか出なくなってしまいました。「a.Contains」「a.IndexOf」と入力したかったのですが、候補が出ず、スピードが鈍っています。一文が確定しても、すべて小文字のままです。「a.contains」,「a.indexof」

    すべてのプロジェクトでなるのではなく、今、改変しようとしているプロジェクトでなります。

    どこがおかしいのでしょうか。インテリセンスの調子が悪ければキャッシュをクリアすればよいという記事を読んだことがありますが、キャッシュがどこにあるのかもわかりません。

    また、何も書かれてない場所で「Alt」+「→」では候補が出ますが、「Containsは」出ても「IndexOf」は出ません。

    よろしくお願いします。

    2018年1月16日 1:35

回答

  • 「あるブロック(プロシージャ)内で起こります」ということであれば、小生なら、まず、そのブロック(プロシージャ)で「a」が別の意味の識別子になっていないか調べます。

    例えばですが、Dim a As StringはClass1のメンバー変数だとして、IntelliSenseが不具合を起こしているように見えるブロック(プロシージャ)で別途「a」を宣言したりしていませんか?

    「IntelliSenseが変だぞ?」というのは小生もちょくちょく遭遇する現象ですが、オチは変数の宣言と使い方の不一致を検出、ってことで、かえって便利だと思っています。



    • 編集済み 外池 2018年1月17日 1:13
    • 回答としてマーク nebokken 2018年1月17日 3:29
    2018年1月17日 1:04
  • nebokken さま よろしく。

    Dim a As String = "2x+3y=5"のような感じ との事ですが、
    列挙される候補が Equals,GetHashCode,GetType,Tostring と言う事は、
    少なくとも、String と認識していない と言う事ですよね。  Object ?。
    例えば、
    そのブロック内の宣言文の後で、Dim aTest = a と挿入して、カーソルを aTest に合わせると、
    どのタイプの変数として認識しているかがわかる筈です。
    a を別の名称に変更して見て下さい。
    或いは、同一名の別種の変数が重複定義されていませんか?。  クラス直下とか。

    コーディングのミスがありそうです。

    参考コード 同じ様な候補の列挙 a. でガイド

        Private Sub test()
            Dim a
            a = "123"
            a.
        End Sub


    • 編集済み ShiroYuki_Mot 2018年1月17日 1:43 参考コード追加
    • 回答としてマーク nebokken 2018年1月17日 3:28
    2018年1月17日 1:27

すべての返信

  • こんにちは。

    ぜんぜん見当つかないですが、それは標準クラスライブラリの範囲の話でしょうか。
    a は通常の配列とかでしょうか。

    2018年1月16日 3:58
    モデレータ
  • Visual Studioのバージョンがわかりませんが、とりあえず、ツール -> オプション -> テキストエディター -> Basic で、
    「自動メンバー表示」、「パラメーターヒント」のチェックを付け直しみると何か変わりますでしょうか?

    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    2018年1月16日 5:08
    モデレータ
  • こんにちは。

    ぜんぜん見当つかないですが、それは標準クラスライブラリの範囲の話でしょうか。
    a は通常の配列とかでしょうか。

    済みません。知識が貧弱なので、標準クラスライブラリがよく分からないのですが、Class1.vbの編集です…で良かったでしょうか。また、a は普通のStringです。Dim a As String = "2x+3y=5"のような感じです。

    で、この質問をした後にも昨日編集を続けましたが、あるブロック(プロシージャ)内で起こります。その他のブロックでは通常に機能しています。不思議です。

    2018年1月17日 0:21
  • Visual Studio Community 2017 です。

    ツール -> オプション -> テキストエディター -> Basic で、 「自動メンバー表示」、「パラメーターヒント」のチェックを付け直し

    上記は実施しましたが、改善は見られませんでした。

    Tak1waさんへの返信にも書きましたが、不思議なことに特定のブロック内でそのようなことが起こります。

    また、Visual Studio Community 2017 の修復を試みましたが、改善は見られませんでした。

    2018年1月17日 0:29
  • 「あるブロック(プロシージャ)内で起こります」ということであれば、小生なら、まず、そのブロック(プロシージャ)で「a」が別の意味の識別子になっていないか調べます。

    例えばですが、Dim a As StringはClass1のメンバー変数だとして、IntelliSenseが不具合を起こしているように見えるブロック(プロシージャ)で別途「a」を宣言したりしていませんか?

    「IntelliSenseが変だぞ?」というのは小生もちょくちょく遭遇する現象ですが、オチは変数の宣言と使い方の不一致を検出、ってことで、かえって便利だと思っています。



    • 編集済み 外池 2018年1月17日 1:13
    • 回答としてマーク nebokken 2018年1月17日 3:29
    2018年1月17日 1:04
  • nebokken さま よろしく。

    Dim a As String = "2x+3y=5"のような感じ との事ですが、
    列挙される候補が Equals,GetHashCode,GetType,Tostring と言う事は、
    少なくとも、String と認識していない と言う事ですよね。  Object ?。
    例えば、
    そのブロック内の宣言文の後で、Dim aTest = a と挿入して、カーソルを aTest に合わせると、
    どのタイプの変数として認識しているかがわかる筈です。
    a を別の名称に変更して見て下さい。
    或いは、同一名の別種の変数が重複定義されていませんか?。  クラス直下とか。

    コーディングのミスがありそうです。

    参考コード 同じ様な候補の列挙 a. でガイド

        Private Sub test()
            Dim a
            a = "123"
            a.
        End Sub


    • 編集済み ShiroYuki_Mot 2018年1月17日 1:43 参考コード追加
    • 回答としてマーク nebokken 2018年1月17日 3:28
    2018年1月17日 1:27
  • 外池さん、ShiroYuki_Motさんのおっしゃるとおりでした。

    ブロックが「Public Sub Main(Fm)・・・End Sub」

    例を出した「a.」は「Fm.」だったのですが、上記のようになっており、FmはObjectと認識されていました。「Main ByVal Fm As String」と直したら、インテリセンスの恩恵を受けられるようになりました。

    お騒がせいたしました。ありがとうございます。

    2018年1月17日 3:28
  • 解決して良かったです。

    Visual Basicのオプションのどこにどういう名前で設定するのか失念しましたが、変数の宣言で型を省略できなくするオプションがあったはずです。このオプションを使われると、さらにミスは減るんじゃないかと思います。コードの中に書き込むのは、Option Strictナントカカントカ・・・、だったかと。

    参考になれば幸いです。
    2018年1月17日 3:41