Visual C# の IntelliSenseVisual C# IntelliSense

Visual C# の IntelliSense は、エディターでコーディングする際、およびイミディエイト モード コマンド ウィンドウでデバッグしている間に使用可能です。Visual C# IntelliSense is available when coding in the editor, and while debugging in the Immediate Mode command window.

入力候補一覧Completion Lists

Visual C# での IntelliSense コンプリート リストには、メンバーの一覧や入力候補などからのトークンが含まれています。The IntelliSense completion lists in Visual C# contain tokens from List Members, Complete Word, and more. コンプリート リストでは、以下にすばやくアクセスできます。It provides quick access to:

  • 型または名前空間のメンバーMembers of a type or namespace

  • 変数、コマンド、関数の名前Variables, commands, and functions names

  • コード スニペットCode snippets

  • 言語キーワードLanguage Keywords

  • 拡張メソッドExtension Methods

C# でのコンプリート リストは非常に高機能でもあるため、コンテキストに基づいて、無関係なトークンを除外したり、トークンを事前に選択したりします。The Completion List in C# is also smart enough to filter out irrelevant tokens and pre-select a token based on context. 詳細については、フィルター処理されたコンプリート リストに関するページを参照してください。For more information, see Filtered Completion Lists.

コンプリート リストのコード スニペットCode Snippets in Completion Lists

Visual C# のコンプリート リストには、コード スニペットが含まれており、事前に定義されたコードの本体をプログラムに簡単に挿入できます。In Visual C#, the completion list includes code snippets to help you easily insert predefined bodies of code into your program. コード スニペットは、スニペットのショートカット テキストとしてコンプリート リストに表示されます。Code snippets appear in the completion list as the snippet's shortcut text. 既定で Visual C# で利用できるコード スニペットの詳細については、「Visual C# のコード スニペット」を参照してください。For more information about code snippets that are available in Visual C# by default, see Visual C# Code Snippets.

コンプリート リストの言語キーワードLanguage Keywords in Completion Lists

Visual C# のコンプリート リストには、言語キーワードも含まれています。In Visual C#, the completion list also includes language keywords. C# の言語キーワードの詳細については、「C# のキーワード」を参照してください。For more information about C# language keywords, see C# Keywords.

コンプリート リストでの拡張メソッドExtension Methods in Completion Lists

Visual C# のコンプリート リストには、スコープ内にある拡張メソッドが含まれます。In Visual C#, the completion list includes Extension Methods that are in scope.

注意

Visual C# のコンプリート リストでは、String オブジェクトのすべての拡張メソッドが表示されるわけではありません。The completion list does not display all extension methods for String objects.

拡張メソッドでは、インスタンス メソッドとは異なるアイコンが使用されます。Extension methods use a different icon than instance methods. 表示されるアイコンの一覧については、「[クラス ビュー] ウィンドウとオブジェクト ブラウザーのアイコン」を参照してください。For a listing of list icons, see Class View and Object Browser Icons. 同じ名前のインスタンス メソッドと拡張メソッドが両方ともスコープ内にある場合、コンプリート リストには拡張メソッドのアイコンが表示されます。When an instance method and extension method with the same name are both in scope, the completion list displays the extension method icon.

フィルター処理されたコンプリート リストFiltered Completion Lists

IntelliSense では、フィルターを使用して、不要なメンバーをコンプリート リストから削除します。IntelliSense removes unnecessary members from the completion list by using filters. Visual C# では、次の項目用に表示されるコンプリート リストをフィルター処理します。Visual C# filters the completion lists that appear for these items:

  • インターフェイスと基本クラス: IntelliSense では、クラス宣言の基本およびインターフェイス リストおよび制約リストの両方で、インターフェイスおよび基本クラスのコンプリート リストから項目を自動的に削除します。Interfaces and base classes: IntelliSense automatically removes items from the interface and base class completion lists, in both class declaration base and interface lists and constraint lists. たとえば、列挙型は基本クラスのコンプリート リストには表示されません。これは、列挙型が基本クラスで使用できないためです。For example, enums do not appear in the completion list for base classes, because enums cannot be used for base classes. 基本クラスのコンプリート リストには、インターフェイスおよび名前空間だけが含まれます。The completion list of base classes only contains interfaces and namespaces. リストで項目を選択し、コンマを入力すると、コンプリート リストから基本クラスが削除されます。これは、Visual C# では多重継承がサポートされていないためです。If you select an item in the list and then type a comma, IntelliSense removes base classes from the completion list because Visual C# does not support multiple inheritance. 制約句の場合も、同様の動作になります。The same behavior occurs for constraint clauses also.

  • 属性: 属性を型に適用した場合、コンプリート リストはフィルター処理され、Attribute などそれらの型を含む名前空間からの型だけがリストに残ります。Attributes: When you apply an attribute to a type, the completion list is filtered so that the list only contains those types that descend from the namespaces that contain those types, such as Attribute.

  • Catch 句Catch clauses

  • オブジェクト初期化子: 初期化できるメンバーだけがコンプリート リストに表示されます。Object initializers: Only members that can be initialized will appear in the completion list.

  • 新しいキーワード: 「new」と入力し、Space キーを押すと、コンプリート リストが表示されます。new keyword: When you type new and then press the SPACEBAR, a completion list appears. コードの状況に応じて、リストの項目が自動的に選択されます。 An item is automatically selected in the list, based on the context in your code. たとえば、メソッドの宣言用と return ステートメント用の項目がコンプリート リストで自動的に選択されます。For example, items are automatically selected in the completion list for declarations and for return statements in methods.

  • enum キーワード: 列挙型 (Enum) の割り当ての等号 (=) の次に Space キーを押すと、コンプリート リストが表示されます。enum keyword: When you press the SPACEBAR after an equal sign for an enum assignment, a completion list appears. コードの状況に応じて、リストの項目が自動的に選択されます。 An item is automatically selected in the list, based on the context in your code. たとえば、キーワード return の入力後や、宣言の作成時に、コンプリート リストで項目が自動的に選択されます。For example, items are automatically selected in the completion list after you type the keyword return and when you make a declaration.

  • as 演算子と is 演算子: as または is のキーワードを入力してから Space キーを押すと、フィルター処理されたコンプリート リストが自動的に表示されます。as and is operators: A filtered completion list is displayed automatically when you press the SPACEBAR after you have typed the as or is keyword.

  • イベント: キーワード event を入力した場合、コンプリート リストにはデリゲート型のみが含まれます。Events: When you type the keyword event, the completion list only contains delegate types.

  • パラメーターを入力すると、パラメーターに一致するメソッド オーバーロードが先頭になるよう、パラメーター ヘルプによって自動的に並べ替えが行われます。Parameter help automatically sorts to the first method overload that matches the parameters as you enter them. 複数のメソッド オーバーロードを使用できる場合は、上向きまたは下向きの矢印を使用し、一覧で次に使用できるオーバーロードに移動できます。If multiple method overloads are available, you can use the up and down arrows to navigate to the next possible overload in the list.

最近使用したメンバーMost recently used members

IntelliSense は、オブジェクト名の自動補完のために、ポップアップ メンバーの一覧ボックスで最近選択したメンバーを記憶します。IntelliSense remembers the members that you have recently selected in the pop-up List Members box for automatic object name completion. 次回メンバーの一覧を使用するときに、最近使用したメンバーが上部に表示されます。The next time you use Member List, the most recently used members are shown at the top. 最近使用したメンバーの履歴は、IDE の各セッションの間に消去されます。The history of most recently used members is cleared between each session in the IDE.

overrideoverride

override と入力してから Space キーを押すと、オーバーライドできる有効な基本クラス メンバーすべてが IntelliSense によりポップアップ リスト ボックスに表示されます。When you type override and then press SPACEBAR, IntelliSense displays all of the valid base class members that you can override in a pop-up list box. override の後ろにメソッドの戻り値の型を入力すると、同じ型を返すメソッドのみが表示されます。Typing the return type of the method after override will prompt IntelliSense to only show methods that return the same type. 一致が見つからなかった場合はすべての基本クラスのメンバーが表示されます。When IntelliSense cannot find any matches, it will display all of the base class members.

自動コード生成Automatic Code Generation

using を追加します。Add using

IntelliSense の using 追加操作では、必須の using ディレクティブがコード ファイルに自動的に追加されます。The Add using IntelliSense operation automatically adds the required using directive to your code file. この機能によって、作成中のコードにだけ集中できるので、それ以外の部分に注意を払う必要がなくなります。This feature enables you to maintain your focus on the code you are writing rather than requiring you to shift your focus to another part of the code.

using の追加操作を実行するには、解決できない型参照にカーソルを置きます。 To initiate the Add using operation, position the cursor on a type reference that cannot be resolved. たとえば、コンソール アプリケーションを作成し、Main メソッドの本体に XmlTextReader を追加すると、コードのその行に赤い波線が表示されます。型参照が解決できないためです。For example, when you create a console application and then add XmlTextReader to the body of the Main method, a red squiggle appears on that line of code because the type reference cannot be resolved. クイック アクションで using の追加を呼び出すことができます。You can then invoke the Add using through the Quick Action. クイック アクションは、バインドされていない型の上にカーソルが置かれた場合にのみ表示されます。The Quick Action is only visible when the cursor is positioned on the unbound type.

using の追加、クイック アクションの展開イメージAdd using, quick action expanded image

電球アイコンをクリックし、[using System.Xml;] を選択すると using ディレクティブが自動的に追加されます。Click the light bulb icon, and then choose using System.Xml; to automatically add the using directive.

using の整理Organize usings

[using の整理] オプションは、ソース コードの動作を変更することなく、usingextern の宣言を並べ替えおよび削除します。The Organize Usings options sort and remove using and extern declarations without changing the behavior of the source code. 時間の経過に伴い、不要で整理されていない using ディレクティブのために、ソース ファイルが肥大化して読みにくくなる場合があります。Over time, source files may become bloated and difficult to read because of unnecessary and unorganized using directives. [using の整理] オプションは、使用されない using ディレクティブを削除してソース コードをコンパクトにし、並べ替えて読みやすくします。The Organize Usings options compact source code by removing unused using directives and improves readability by sorting them.

Visual Studio IDE で使用可能なオプションを参照するには、[編集] メニューで、[IntelliSense] をポイントしてから、[using の整理] をポイントします。To see the available options in the Visual Studio IDE, on the Edit menu, point to IntelliSense, and then point to Organize Usings. IDE には、usings ディレクティブの並び替えや削除に関する以下のオプションがあります。The IDE provides the following options to organize and remove usings directives:

インターフェイスの実装Implement Interface

IntelliSense を使用すると、コード エディターでの作業中にインターフェイスを簡単に実装できます。IntelliSense provides an option to help you implement an interface while working in the Code Editor. 通常、インターフェイスを適切に実装するには、クラス内で、インターフェイスのすべてのメンバーについてメソッド宣言を作成する必要があります。Normally, to implement an interface properly, you must create a method declaration for every member of the interface in your class. IntelliSense を使用した場合、クラス宣言でインターフェイスの名前を入力すると、クイック アクションの電球が表示されます。Using IntelliSense, after you type the name of an interface in a class declaration, a Quick Actions light bulb is displayed. この電球には、インターフェイスを自動的に実装する際のオプションが表示され、名前付けを明示的に行うか、暗黙的に行うかを選択できます。The light bulb gives you the option to implement the interface automatically, using explicit or implicit naming. 明示的な名前付けを使用した場合、メソッド宣言にインターフェイス名が追加されます。逆に暗黙的な名前付けを使用した場合、メソッド宣言には所属するインターフェイスは明示されません。Under explicit naming, the method declarations carry the name of the interface; under implicit naming, the method declarations do not indicate the interface to which they belong. 明示的に名前付けされたインターフェイス メソッドには、インターフェイスのインスタンスからアクセスすることしかできず、クラスのインスタンスからアクセスすることはできません。An explicitly named interface method can only be accessed through an interface instance, and not through a class instance. 詳細については、「明示的なインターフェイスの実装」を参照してください。For more information, see Explicit Interface Implementation.

インターフェイスの実装機能では、そのインターフェイスに必要な最低限の数のメソッド スタブが生成されます。Implement Interface will generate the minimum number of method stubs that is required to satisfy the interface. 基本クラスにインターフェイスの一部だけが実装されている場合、これらのスタブは再生成されません。If a base class implements parts of the interface, then those stubs are not regenerated.

抽象基本クラスの実装Implement abstract base class

IntelliSense には、コード エディターでの作業中、抽象基本クラスのメンバーを自動的に実装するためのオプションが用意されています。 IntelliSense provides an option to help you implement members of an abstract base class automatically while working in the Code Editor. 通常、抽象基本クラスのメンバーを実装するには、派生クラスで抽象基本クラスのメソッドごとに新しいメソッド定義を作成する必要があります。Normally, to implement members of an abstract base class requires creating a new method definition for each method of the abstract base class in your derived class. IntelliSense を使用した場合、クラス宣言で抽象基本クラスの名前を入力すると、クイック アクションの電球が表示されます。Using IntelliSense, after typing the name of an abstract base class in a class declaration, a Quick Actions light bulb is displayed. この電球で、基本クラスのメソッドを自動的に実装するためのオプションを選択できます。The light bulb gives you the option to implement the base class methods automatically.

抽象基本クラスの実装機能によって生成されるメソッド スタブは、MethodStub.snippet ファイルで定義されたコード スニペットがベースになります。The method stubs that are generated by the Implement Abstract Base Class feature are modeled by the code snippet defined in the file MethodStub.snippet. コード スニペットは変更できます。Code Snippets are modifiable. 詳細については、「チュートリアル: コード スニペットを作成する」を参照してください。For more information, see Walkthrough: Creating a Code Snippet.

使用法から生成Generate from usage

[使用法から生成] 機能では、クラスとメンバーを定義する前にそれらを使用することができます。The Generate From Usage feature enables you to use classes and members before you define them. 使用されますが、まだ定義されていないクラス、コンストラクター、メソッド、プロパティ、フィールド、または列挙型に対してスタブを生成することができます。You can generate a stub for any class, constructor, method, property, field, or enum that you want to use but have not yet defined. コード内の現在の場所を離れずに、新しい型とメンバーを生成することができます。You can generate new types and members without leaving your current location in code. これにより、ワークフローの中断を最小限にします。This minimizes interruption to your workflow.

未定義の識別子の下にそれぞれ、波状の赤い下線が表示されます。A red wavy underline appears under each undefined identifier. 識別子の上にマウス ポインターを置くと、ヒントにエラー メッセージが表示されます。When you rest the mouse pointer on the identifier, an error message appears in a tooltip. 適切なオプションを表示するには、次の手順のいずれかを使用することができます。To display the appropriate options, you can use one of the following procedures:

  • 未定義の識別子をクリックします。Click the undefined identifier. クイック アクションの電球が識別子の下に表示されます。A Quick Actions light bulb appears under the identifier. 電球をクリックします。Click the light bulb.

  • 未定義の識別子をクリックし、Ctrl+.Click the undefined identifier, and then press Ctrl+. (Ctrl + ピリオド) を押します。(Ctrl + period).

  • 未定義の識別子を右クリックして、[クイック アクションとリファクタリング] をクリックします。Right-click the undefined identifier, and then click Quick Actions and Refactorings.

表示されるオプションは、次のとおりです。The options that appear can include the following:

  • プロパティの生成Generate property

  • フィールドの生成Generate field

  • メソッドの生成Generate method

  • クラスの生成Generate class

  • 新しい型の生成... (クラス、構造体、インターフェイス、列挙型)Generate new type... (for a class, struct, interface, or enum)

イベント ハンドラーの生成Generate event handlers

コード エディターで、IntelliSense はイベント フィールドにメソッド (イベント ハンドラー) をフックするのに役立ちます。In the Code Editor, IntelliSense can help you hook up methods (event handlers) to event fields.

.cs ファイルのイベント フィールドの後に += 演算子を入力すると、IntelliSense では Tab キーを押すオプションの使用が求められます。When you type the += operator after an event field in a .cs file, IntelliSense prompts you with the option to press the TAB key. これで、イベントを処理するメソッドを示すデリゲートの新しいインスタンスを挿入します。This inserts a new instance of a delegate that points to the method handling the event.

オート フック ボタンButton Auto Hook Up

Tab キーを押すと、IntelliSense は自動的にステートメントを完了し、コード エディターに選択されたテキストとしてイベント ハンドラーの参照を表示します。If you press TAB, IntelliSense automatically finishes the statement for you and displays the event handler reference as selected text in the Code Editor. 自動イベント フックアップを完了するには、IntelliSense はイベント ハンドラーの空のスタブを作成するために、もう一度 Tab キーを押すように要求します。To complete the automatic event hookup, IntelliSense prompts you to press the TAB key again to create an empty stub for the event handler.

イベント ハンドラーの作成Generate Event Handler

注意

IntelliSense によって作成された新しいデリゲートが既存のイベント ハンドラーを参照する場合、IntelliSense はヒントのこの情報と通信します。If a new delegate that is created by IntelliSense references an existing event handler, IntelliSense communicates this information in the tooltip. その後、この参照を変更できます。テキストはコード エディターで既に選択されています。You can then modify this reference; the text is already selected in the Code Editor. それ以外の場合、自動イベント フックアップはこの時点で完了します。Otherwise, automatic event hookup is complete at this point.

Tab キーを押すと、IntelliSense は正しいシグネチャでメソッドをスタブして、イベント ハンドラーの本体にカーソルを置きます。If you press TAB, IntelliSense stubs out a method with the correct signature and puts the cursor in the body of your event handler.

注意

[ビュー] メニュー (Ctrl + -) の [戻る] コマンドを使用して、イベント フックアップ ステートメントに戻ります。Use the Navigate Backward command on the View menu (CTRL+-) to go back to the event hookup statement.

関連項目See Also

Visual Studio IDEVisual Studio IDE