使用時產生

「使用時產生」功能可以讓您在定義類別和成員前,先使用這些項目。 您可以產生想要使用但尚未定義之類別、建構函式、方法、屬性、欄位或列舉的 Stub。 您也可以產生新的型別和成員,而不需要離開程式碼中目前的位置。 這樣可以將您工作時的干擾降到最低。

「使用時產生」可以支援程式設計樣式 (例如測試優先開發)。

在 C# 中運用使用時產生

每個未定義的識別項底下都會出現波浪形底線。 將滑鼠指標放在此識別項上方時,工具提示中會顯示錯誤訊息。

若要顯示適當的選項,您可以使用下列其中一個程序:

  • 按一下未定義的識別項。 最左邊字元底下隨即出現短底線。 將滑鼠指標放在短底線上方,並且顯示智慧標籤 (圖示)。 按一下智慧標籤。

  • 按一下未定義的識別項,然後按 CTRL+. (句號)。

  • 以滑鼠右鍵按一下未定義的識別項,然後按一下 [產生]。

顯示的選項包括下列項目:

  • 產生屬性 Stub

  • 產生欄位 Stub

  • 產生方法 Stub

  • 產生類別

  • 產生新的型別 (適用於類別、結構、介面或列舉)

在 Visual Basic 中運用使用時產生

每個未定義的識別項底下都會出現波浪形底線,而最左邊的字元底下會出現短的底線。 將滑鼠指標放在此識別項上方時,工具提示中會顯示錯誤訊息。

若要顯示適當的選項,您可以使用下列其中一個程序:

  • 將滑鼠指標放在未定義的識別項上。 智慧標籤 (圖示) 隨即出現。 按一下智慧標籤。

  • 按一下未定義的識別項,然後按 CTRL+. (句號)。

  • 在 [錯誤清單] 視窗中,按兩下對應的錯誤列。

顯示的選項包括下列項目:

  • 產生屬性 Stub

  • 產生欄位 Stub

  • 產生方法 Stub

  • 產生類別

  • 產生介面

  • 產生新的型別 (適用於類別、結構、介面、列舉、委派或模組)

產生屬性 Stub

如果程式碼參考未定義的屬性,請按一下 [產生屬性 Stub]。 適當的類別中隨即產生屬性 Stub。 屬性的傳回型別取決於內容。

例如,假設從下列程式碼中的陳述式產生 InstanceProperty 屬性。

Dim cust As New Customer()
Dim city As String = cust.InstanceProperty
Customer cust = new Customer();
string city = cust.InstanceProperty;

當您產生屬性時,便會在 Customer 類別中建立下列 Stub。

Property InstanceProperty() As String
public string InstanceProperty { get; set; }

如果是在型別 (而非執行個體) 上叫用屬性,產生的 Stub 將會是靜態屬性 (C#) 或共用屬性 (Visual Basic)。

例如,試想您從下列陳述式產生屬性 (假設 Customer 為類別名稱)。

Dim description As String = Customer.SharedProperty
string description = Customer.StaticProperty;

當您產生屬性時,便會在 Customer 類別中建立下列 Stub。

Shared Property SharedProperty As String
public static string StaticProperty { get; set; }

未使用限定性條件 (參考目前型別的成員) 叫用屬性時,如果從靜態方法呼叫屬性,那麼產生的 Stub 就是靜態屬性, 否則即為執行個體屬性。

例如,假設從下列陳述式產生屬性。

Dim title As String = UnqualifiedProperty
string title = UnqualifiedProperty;

當您產生屬性時,便會在目前的類別中建立下列 Stub。

Private Property UnqualifiedProperty() As String
public string UnqualifiedProperty { get; set; }

產生方法 Stub

如果程式碼參考未定義的方法,請按一下 [產生方法 Stub]。 適當的類別中隨即產生方法 Stub。

每個參數的型別和傳回型別取決於內容。 無法推斷型別時,例如在匿名型別或隱含型別區域變數 (變數以 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);

當您產生方法時,便會在適當的類別中建立下列 Stub。

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();
}

如果是在型別 (而非執行個體) 上叫用方法,產生的 Stub 將會是靜態方法 (C#) 或共用方法 (Visual Basic)。

產生事件的方法 Stub

在 Visual Basic 中,您可以為在 AddHandler 陳述式RemoveHandler 陳述式中參考的事件產生事件處理常式方法。

例如,假設從下列程式碼中的任一陳述式產生 EventHandler 方法。

AddHandler obj.Ev_Event, AddressOf EventHandler
RemoveHandler obj.Ev_Event, AddressOf EventHandler

當您產生方法時,便會在目前的類別中建立下列 Stub。

Private Sub EventHandler()
    Throw New NotImplementedException
End Sub

產生建構函式 Stub

如果程式碼參考未定義的建構函式,請按一下 [產生建構函式 Stub]。 適當的類別中隨即產生建構函式 Stub。 每個參數的型別取決於內容。

建構函式參數的名稱會經過檢查。 如果類別具有名稱與這些參數名稱相符的屬性,便會在建構函式中提供程式碼以儲存這些屬性的引數值。

例如,假設從下列程式碼中的陳述式產生 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;

下列建構函式 Stub 隨即建立。

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 中,也可以在產生類別時產生建構函式。 如需詳細資訊,請參閱本主題的下一節。

產生類別

如果程式碼參考未定義的類別或其他型別,則會出現 [產生類別] 和 [產生新的型別] 的選擇。

如果按一下 [產生類別],便會在專案的新檔案中產生空的類別 Stub。 新的檔案會在 [程式碼編輯器] 中開啟 (但是沒有取得焦點)。 若要在目前專案的新檔案中建立含有預設存取修飾詞的新類別型別,這是最快速的方式。

例如,假設從下列陳述式產生類別。

Dim cust As Customer
Customer cust;

當您產生類別時,便會在專案的新檔案中建立下列新的類別 Stub。

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"}

當您產生類別時,便會在專案的新檔案中建立下列新的類別 Stub。 類別中會產生建構函式。 對於先前程式碼之 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#) 或結構 (Visual Basic),則會出現 [產生類別] 和 [產生新的型別] 的選擇。 下圖顯示這個步驟。

Visual Basic

Visual Basic 中的智慧標籤內容功能表

Visual C#

C# 中的智慧標籤內容功能表

按一下 [產生新的型別] 開啟 [產生新的型別] 對話方塊,您可以在其中選擇存取層級、類型、專案位置和檔案名稱。

[產生新的型別] 選項可在您產生類別時提供更多的彈性。 您可以依個人喜好,在現有檔案中放置類別、指定存取修飾詞,或是將新檔案加入至方案中的其他專案。

下圖顯示 [產生新的型別] 對話方塊。

產生新的型別對話方塊

[產生新的型別] 對話方塊

下表顯示 [產生新的型別] 對話方塊中提供的選擇。

選項

C# 的選擇

Visual Basic 的選擇

存取權

default、public、internal 或 private。

Default、Friend 或 Public。

類型

類別、結構、介面或列舉。

類別、結構、介面、列舉、委派或模組。

專案位置

方案中的目前專案或其他專案。

方案中的目前專案或其他專案。

檔案名稱

[使用檔名建立新檔] 或 [使用檔名加入到現有檔案]。

[使用檔名建立新檔] 或 [使用檔名加入到現有檔案]。

如果是在新的檔案中產生型別,新檔案將會為 [加入新項目] 對話方塊產生的類別包含一組預設的 using 指示詞。

如果是在方案的其他專案中產生型別,則會在目前檔案中加入參考該專案的 using 指示詞。

產生介面 Stub

若要從未定義的介面產生程式碼,請按一下 [產生新的型別]。 [產生新的型別] 對話方塊隨即開啟。 按 一下 [類型] 清單中的 [介面]。 在 Visual Basic 中,您也可以按一下 [產生介面]。

例如,假設從下列程式碼中的陳述式產生 IAuto 介面。

Public Class Sedan : Implements IAuto
End Class
public class Sedan : IAuto
{
}

當您產生介面時,便會建立下列 Stub。

Interface IAuto

End Interface
interface IAuto
{
}

產生委派 Stub

在 Visual Basic 中,若要從未定義的委派產生程式碼,請按一下 [產生新的型別]。 [產生新的型別] 對話方塊隨即開啟。 按 一下 [類型] 清單中的 [委派]。

例如,假設從下列程式碼中的陳述式產生 MathOperator 委派。

Dim delInstance As New MathOperator(AddressOf AddNumbers)

當您產生委派時,便會建立下列 Stub。

Delegate Sub MathOperator()

IntelliSense 建議模式

IntelliSense 針對完成陳述式提供兩個選項:「完成」(Completion) 模式和「建議」(Suggestion) 模式。 在尚未定義就要使用類別和成員的情況下,請使用建議模式。

在 IntelliSense 建議模式中,如果您在程式碼編輯器進行輸入,然後認可項目,則會將輸入的文字插入至程式碼中。 當您在 IntelliSense 完成模式中認可項目時,會將成員清單中選取的項目插入至程式碼中。

當 IntelliSense 視窗開啟時,按 CTRL+ALT+空格鍵即可切換完成模式和建議模式。

如需詳細資訊,請參閱列出成員

請參閱

工作

逐步解說:以使用時產生功能支援測試優先

其他資源

編碼輔助

自動產生程式碼