[メソッド スタブの生成]

更新 : 2007 年 11 月

[メソッド スタブの生成] は、IntelliSense の自動コード生成機能です。この機能を使用すると、メソッドの呼び出しを記述するときに新しいメソッド宣言が Visual Studio によって作成されます。Visual Studio は呼び出しから宣言を推論します。

テスト駆動開発など、一部のプログラミング スタイルでは、メソッドの呼び出しを最初に記述してしまい、メソッド本体は後から定義することが推奨されています。その方が、開発中の API の全体像を容易に把握できるためです。IntelliSense は、このようなプログラミング スタイルに最適です。[メソッド スタブの生成] を使用することで、すべてを定義しなくても、メソッドを利用できるようになります。

IntelliSense の [メソッド スタブの生成] の機能により生産性も向上します。新しいメソッドを生成するときに、呼び出し先のコードの定義を気にせず、現在の作業対象である呼び出し元のコードにのみ集中できるためです。メソッドの呼び出しを作成してから [メソッド スタブの生成] を使用できるので、現在の作業に集中できます。

解説

スマート タグを使用した呼び出し

[メソッド スタブの生成] を使用できる場合は、スマート タグによって示されます。このスマート タグは、カーソルがメソッドの呼び出しに置かれている場合にのみ利用でき、呼び出されるメソッドと同じ名前でパラメータの数が同じメソッドを Visual Studio が見つけることができない場合に表示されます。このスマート タグは、メソッド識別子の左端の文字の下に表示されます。メソッドの呼び出しからカーソルを移動すると、スマート タグは表示されなくなります。

[メソッド スタブの生成] コマンドは、ショートカット キー、[IntelliSense] メニュー、およびコード エディタのショートカット メニューから呼び出すことができます。詳細については、「方法 : メソッド スタブを生成する」を参照してください。

手動での呼び出し

[IntelliSense] メニューを使用すると、すべてのコンテキストで常に [メソッド スタブの生成] コマンドにアクセスできます。これにより、パラメータの数は同じで型だけが異なるメソッドのオーバーロードが可能になります。次に例を示します。

   class Program
   {
      static void Method(int a) { }

      static void Main()
      {
         Method("Call"); // No smart tag.
      }
   }

前述のプログラム例では、Method の呼び出しの部分にカーソルを置くと、スマート タグが利用できます。しかし、[IntelliSense] メニューの [メソッド スタブの生成] コマンドを呼び出すと、Method という、文字列型のパラメータを受け取る静的メソッドが IntelliSense によって生成されます。

生成されるメソッド スタブは、インスタンス メソッドになる場合と、静的メソッドになる場合とがあります。メソッドが型で呼び出された場合、生成されるスタブは静的メソッドになります。それ以外の場合は、インスタンス メソッドになります。

パラメータ名

生成されたメソッド スタブの各パラメータの名前は、メソッド呼び出しに渡された引数の名前に基づいて付けられます。次に例を示します。

   class Program
   {
      static void Main()
      {
         string filename = @"file.txt";
         int wordCount = CountWords(filename);
      }
   }

前述のプログラム例で [メソッド スタブの生成] コマンドを実行すると、filename という文字列型のパラメータを受け取るメソッド シグネチャが生成されます。

[メソッド スタブの生成] の機能によって生成されるコードは、MethodStub.snippet ファイルで定義されたコード スニペットを基にしています。コード スニペットは編集できます。詳細については、「方法 : コード スニペットを管理する」を参照してください。

あいまいな型

[メソッド スタブの生成] は、匿名型や暗黙的に型指定されたローカル変数 (キーワード var) などでパラメータや戻り値の型を推論できない場合、Object を使用します。次に例を示します。

   class Program
   {
      static void Main()
      {
         var filename = Method(); //Cannot infer the return type
      }
   }

前述の例では、Method() で [メソッド スタブの生成] コマンドを呼び出すと、Object を返すメソッド スタッブが生成されます。

参照

処理手順

方法 : メソッド スタブを生成する

その他の技術情報

自動コード生成