使用法から生成
使用法から生成機能を使用すると、クラスやメンバーを定義前に使用できます。 未定義のクラス、コンストラクター、メソッド、プロパティ、フィールド、または列挙型のスタブを生成できます。 現在のコード位置から離れずに、新しい型とメンバーを生成できます。 これにより、ワークフローの中断を最小限に抑えられます。
使用法から生成機能は、テスト ファースト開発などのプログラミング スタイルを支援します。
使用法から生成機能の C# での使用
未定義の各識別子の下に波線が表示されます。 マウス ポインターを識別子上に置くと、ツールヒントにエラー メッセージが表示されます。
適切なオプションを表示するには、次の手順のいずれかを使用します。
未定義の識別子をクリックします。 左端の文字の下に短い下線が表示されます。 マウス ポインターを短い下線の上に置くと、スマート タグ (アイコン) が表示されます。 スマート タグをクリックします。
未定義の識別子をクリックし、Ctrl キーを押しながら . (ピリオド) を押します。
未定義の識別子を右クリックし、[生成] をクリックします。
表示されるオプションには、次のようなものがあります。
[プロパティ スタブの生成]
[フィールド スタブの生成]
[メソッド スタブの生成]
[クラスの生成]
[新しい型の生成] (クラス、構造体、インターフェイス、または列挙型用)
使用法から生成機能の Visual Basic での使用
未定義の各識別子の下に破線が表示され、右端の文字の下に短い下線が表示されます。 マウス ポインターを識別子上に置くと、ツールヒントにエラー メッセージが表示されます。
適切なオプションを表示するには、次の手順のいずれかを使用します。
マウス ポインターを未定義の識別子に置きます。 スマート タグ (アイコン) が表示されます。 スマート タグをクリックします。
未定義の識別子をクリックし、Ctrl キーを押しながら . (ピリオド) を押します。
[エラー一覧] ウィンドウで、対応するエラーの行をダブルクリックします。
表示されるオプションには、次のようなものがあります。
[プロパティ スタブの生成]
[フィールド スタブの生成]
[メソッド スタブの生成]
[クラスの生成]
[インターフェイスの生成]
[新しい型の生成] (クラス、構造体、インターフェイス、列挙型、デリゲート、またはモジュール用)
プロパティ スタブの生成
コードが未定義のプロパティを参照している場合、[プロパティ スタブの生成] をクリックします。 プロパティ スタブが該当するクラス内に作成されます。 プロパティの戻り値の型は、コンテキストによって決定されます。
たとえば、次のコードのステートメントから InstanceProperty プロパティを生成するとします。
Dim cust As New Customer()
Dim city As String = cust.InstanceProperty
Customer cust = new Customer();
string city = cust.InstanceProperty;
プロパティを生成すると、次のスタブが Customer クラス内に作成されます。
Property InstanceProperty() As String
public string InstanceProperty { get; set; }
プロパティがインスタンスでなく型で呼び出される場合、生成されたスタブは静的プロパティ (C#) または共有プロパティ (Visual Basic) になります。
たとえば、プロパティを次のステートメントから生成するとします (Customer はクラス名)。
Dim description As String = Customer.SharedProperty
string description = Customer.StaticProperty;
プロパティを生成すると、次のスタブが Customer クラス内に作成されます。
Shared Property SharedProperty As String
public static string StaticProperty { get; set; }
プロパティが、現在の型のメンバーを参照する修飾子なしで呼び出される場合、呼び出し元が静的メソッドであれば、生成されるスタブは静的になります。 それ以外の場合、インスタンス プロパティになります。
たとえば、次のステートメントからプロパティを生成するとします。
Dim title As String = UnqualifiedProperty
string title = UnqualifiedProperty;
プロパティを生成すると、次のスタブが現在のクラス内に作成されます。
Private Property UnqualifiedProperty() As String
public string UnqualifiedProperty { get; set; }
メソッド スタブの生成
コードが未定義のメソッドを参照している場合、[メソッド スタブの生成] をクリックします。 メソッド スタブが該当するクラス内に作成されます。
各パラメーターの型と戻り値の型は、コンテキストによって決定されます。 オブジェクト型は、匿名型や暗黙的に型指定されたローカル変数 (var キーワードを使用して定義された変数) などで型を推測できない場合に使用されます。
各パラメーターの名前は、メソッド呼び出しに渡された引数の名前に基づいて付けられます。
たとえば、次のコードのステートメントから InstanceMethod メソッドを生成するとします。
Dim cust As New Customer()
Dim itemNumber = 3
Dim itemName = "abc"
cust.InstanceMethod(itemNumber, itemName, 4)
Customer cust = new Customer();
int itemNumber = 3;
string itemName = "abc";
cust.InstanceMethod(itemNumber, itemName, 4);
メソッドを生成すると、次のスタブが適切なクラス内に作成されます。
Sub InstanceMethod(ByVal itemNumber As Integer, ByVal itemName As String, ByVal p3 As Integer)
Throw New NotImplementedException
End Sub
internal void InstanceMethod(int itemNumber, string itemName, int p)
{
throw new NotImplementedException();
}
メソッドがインスタンスでなく型で呼び出される場合、生成されたスタブは静的メソッド (C#) または共有メソッド (Visual Basic) になります。
イベントに対するメソッド スタブの生成
Visual Basic では、AddHandler ステートメント または RemoveHandler ステートメントで参照されたイベントに対し、イベント ハンドラー メソッドを生成できます。
たとえば、コード内の次のステートメントのいずれかから EventHandler メソッドを生成するとします。
AddHandler obj.Ev_Event, AddressOf EventHandler
RemoveHandler obj.Ev_Event, AddressOf EventHandler
メソッドを生成すると、次のスタブが現在のクラス内に作成されます。
Private Sub EventHandler()
Throw New NotImplementedException
End Sub
コンストラクター スタブの生成
コードが未定義のコンストラクターを参照している場合、[コンストラクター スタブの生成] をクリックします。 コンストラクター スタブが該当するクラス内に生成されます。 各パラメーターの型は、コンテキストによって決定されます。
コンストラクターのパラメーターの名前が確認されます。 クラスにこれらのパラメーター名と一致する名前のプロパティがある場合、これらのプロパティの引数値を格納するためのコードがコンストラクター内に提供されます。
たとえば、次のコードのステートメントから Example クラスのコンストラクターを生成するとします。
Dim total As Long = 12
Dim exampleTest As New Example(5, total, Date.Now)
long total = 12;
Example exampleTest = new Example(5, total, System.DateTime.Now);
コンストラクターを生成すると、次のプライベート変数が Example クラス内に作成されます (既に作成されていない場合)。
Private _p1 As Integer
Private _total As Long
Private _p3 As Date
private int p;
private long total;
private DateTime dateTime;
次のコンストラクター スタブが作成されます。
Sub New(ByVal p1 As Integer, ByVal total As Long, ByVal p3 As Date)
' TODO: Complete member initialization
_p1 = p1
_total = total
_p3 = p3
End Sub
public Example(int p, long total, DateTime dateTime)
{
// TODO: Complete member initialization
this.p = p;
this.total = total;
this.dateTime = dateTime;
}
クラス内に複数のコンストラクターを生成できます。 追加のコンストラクターは、コンストラクター呼び出しに異なる数の引数または異なる引数の型がある場合に生成できます。
Visual Basic では、コンストラクターをクラスの生成時に生成することもできます。 詳細については、このトピックの次のセクションを参照してください。
クラスの生成
コードが未定義のクラスまたは他の型を参照している場合、[クラスの生成] と [新しい型の生成] の選択肢が表示されます。
[クラスの生成] をクリックした場合、空のクラス スタブがプロジェクトの新しいファイル内に生成されます。 新しいファイルがコード エディターで開きます (ただしフォーカスはここに移りません)。 この方法が、既定のアクセス修飾子を使用して、現在のプロジェクトの新しいファイル内に新しいクラス型を作成するには最も簡単です。
たとえば、次のステートメントからクラスを生成するとします。
Dim cust As Customer
Customer cust;
クラスを生成すると、次の新しいクラス スタブがプロジェクトの新しいファイル内に作成されます。
Class Customer
End Class
namespace CSharpWindowsApp
{
class Customer
{
}
}
継承された基本クラスがクラス定義内で未定義の場合、[クラスの生成] を使用することもできます。
クラスとコンストラクターの同時生成
Visual Basic では、適切な場合、生成されたクラスにコンストラクターが含まれます。
たとえば、次のステートメントからクラスを生成するとします。
Dim total = 3
Dim exampleTest As New Example(5, total, Date.Now) With {.Description = "book"}
クラスを生成すると、次の新しいクラス スタブがプロジェクトの新しいファイル内に作成されます。 コンストラクターがクラス内に生成されます。 上記のコードの With 句にあるオブジェクト初期化子に対し、Description プロパティが作成されます。
Class Example
Private _p3 As Date
Private _total As Integer
Private _p1 As Integer
Sub New(ByVal p1 As Integer, ByVal total As Integer, ByVal p3 As Date)
' TODO: Complete member initialization
_p1 = p1
_total = total
_p3 = p3
End Sub
Property Description As String
End Class
追加のオプションを使用した新しい型の生成
コードが未定義のクラス、インターフェイス、列挙型、または構造体 (C# では struct、Visual Basic では structure) を参照している場合、[クラスの生成] と [新しい型の生成] の選択肢が表示されます。 これを次の図に示します。
Visual Basic
Visual C#
[新しい型の生成] をクリックして [新しい型の生成] ダイアログ ボックスを開きます。ここで、アクセス レベル、型の種類、プロジェクトの場所、およびファイル名を選択できます。
[新しい型の生成] オプションを使用すると、クラスの生成時の柔軟性が高まります。 クラスを既存のファイルに含める、アクセス修飾子を指定する、または新しいファイルをソリューション内の別のプロジェクトに追加する必要がある場合があります。
次の図は、[新しい型の生成] ダイアログ ボックスを示しています。
[新しい型の生成] ダイアログ ボックス
次の表に、[新しい型の生成] ダイアログ ボックスで使用できる選択肢を示します。
オプション |
C# での選択肢 |
Visual Basic での選択肢 |
---|---|---|
アクセス |
既定、パブリック、内部、またはプライベート |
既定、フレンド、またはパブリック |
種類 |
クラス、構造体、インターフェイス、または列挙型 |
クラス、構造体、インターフェイス、列挙型、デリゲート、またはモジュール |
プロジェクトの場所 |
現在のプロジェクト、またはソリューション内の別のプロジェクト |
現在のプロジェクト、またはソリューション内の別のプロジェクト |
ファイル名 |
[次のファイル名で新しいファイルを作成] または [次のファイル名で存在するファイルに追加] |
[次のファイル名で新しいファイルを作成] または [次のファイル名で存在するファイルに追加] |
型が新しいファイル内に生成された場合、その新しいファイルには、[新しい項目の追加] ダイアログ ボックスで生成されたクラスの using ディレクティブの既定のセットが格納されます。
型がソリューション内の別のプロジェクトに生成された場合、そのプロジェクトを参照する using ディレクティブが現在のファイルに追加されます。
インターフェイス スタブの生成
コードを未定義のインターフェイスから生成する場合、[新しい型の生成] をクリックします。 [新しい型の生成] ダイアログ ボックスが表示されます。 [種類] の一覧の [インターフェイス] をクリックします。 Visual Basic では、[インターフェイス スタブの生成] をクリックすることもできます。
たとえば、次のコードのステートメントから IAuto インターフェイスを生成するとします。
Public Class Sedan : Implements IAuto
End Class
public class Sedan : IAuto
{
}
インターフェイスを生成すると、次のスタブが作成されます。
Interface IAuto
End Interface
interface IAuto
{
}
デリゲート スタブの生成
Visual Basic でコードを未定義のデリゲートから生成する場合、[新しい型の生成] をクリックします。 [新しい型の生成] ダイアログ ボックスが表示されます。 [種類] の一覧の [デリゲート] をクリックします。
たとえば、次のコードのステートメントから MathOperator デリゲートを生成するとします。
Dim delInstance As New MathOperator(AddressOf AddNumbers)
デリゲートを生成すると、次のスタブが作成されます。
Delegate Sub MathOperator()
IntelliSense 候補提示モード
IntelliSense のステートメント入力候補には、入力候補モードと候補提示モードの 2 種類があります。 まだ定義していないクラスやメンバーを使用する場合は、候補提示モードを使用します。
IntelliSense の候補提示モードで、コード エディターに入力してエントリをコミットすると、入力したテキストがコードに挿入されます。 IntelliSense の入力候補モードでエントリをコミットすると、メンバー一覧で選択されたエントリがコードに挿入されます。
IntelliSense ウィンドウが開いているときに Ctrl キーと Alt キーを押しながら Space キーを押すと、IntelliSense の入力候補モードと候補提示モードを切り替えることができます。
詳細については、「メンバーの一覧」を参照してください。