[メソッド スタブの生成]
更新 : 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 を返すメソッド スタッブが生成されます。