🚀 在 VS Code 中免費取得

C# 快速動作與重構

Visual Studio Code 提供多種方式來重構原始碼,以及快速修正功能,可在您撰寫程式碼時產生程式碼並修正問題。若要存取這些功能,請按一下出現的「燈泡」圖示,或使用 快速修正 命令 ⌘. (Windows、Linux Ctrl+.) 來顯示快速修正和重構選項的清單。您也可以在編輯器上按一下滑鼠右鍵,然後選取 [重構] ⌃⇧R (Windows、Linux Ctrl+Shift+R) 以僅顯示重構選項。

支援的重構和快速修正

新增 await

用途:await 關鍵字新增至函式呼叫。

時機: 在非同步方法中呼叫函式時。

操作方式

  1. 將插入號放在函式呼叫旁 (很可能會以紅色底線標示)。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [新增 await]。

Add await example

從成員新增建構函式參數

用途: 根據選取的類別成員,產生具有參數的新建構函式。

時機: 您引入新的建構函式,並想要自動正確地宣告它以及所有正確的參數時。

原因: 您可以在使用建構函式之前宣告它,但此功能會自動產生它。

操作方式

  1. 醒目提示您想要在建構函式中新增為參數的類別成員。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [產生建構函式 <類別名稱>(<成員類型>、<成員類型> 等)]。

Add constructor parameters from members example

新增 DebuggerDisplay 屬性

用途: DebuggerDisplay 屬性控制物件、屬性或欄位在偵錯工具變數視窗中的顯示方式。

時機: 您想要在程式碼中以程式設計方式釘選屬性在偵錯工具中。

原因: 釘選屬性可讓您快速檢查物件,方法是將該屬性向上浮動到偵錯工具中物件的屬性清單頂端。

操作方式

  1. 將游標放在型別、委派、屬性或欄位上。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表,然後選取 [新增 DebuggerDisplay 屬性]。
  3. DebuggerDisplay 屬性會與傳回預設 ToString() 的自動方法一起新增。

Add DebuggerDisplay attribute example

新增明確轉換

用途: 讓您可以根據使用方式,自動將明確轉換新增至運算式。

時機: 您需要將明確轉換新增至運算式,並想要自動正確地指派它時。

原因: 您可以手動將明確轉換新增至運算式,但此功能會根據程式碼內容自動新增它。

操作方式

  1. 將插入號放在錯誤上。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [新增明確轉換]。

新增檔案標頭

用途: 使用 EditorConfig 將檔案標頭新增至現有的檔案、專案和方案。

時機: 您想要輕鬆地將檔案標頭新增至檔案、專案和方案時。

原因: 您的團隊要求您包含檔案標頭以用於著作權目的。

操作方式

  1. 如果您還沒有 EditorConfig,請將其新增至專案或方案。
  2. 將下列規則新增至您的 EditorConfig 檔案:file_header_template
  3. 將規則的值設定為等於您想要套用的標頭文字。您可以使用 {fileName} 作為檔案名稱的預留位置。
  4. 將插入號放在任何 C# 檔案的第一行。
  5. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  6. 選取 [新增檔案標頭]。

新增遺失的 using/imports

用途: 讓您可以立即為複製貼上的程式碼新增必要的 imports 或 using 指示詞。

時機: 從專案或其他來源的不同位置複製程式碼,並將其貼到新程式碼中是很常見的做法。此快速動作會尋找複製貼上程式碼中遺失的 imports 指示詞,然後提示您新增這些指示詞。此程式碼修正也能新增從專案到專案的參考。

原因: 因為快速動作會自動新增必要的 imports,所以您不需要手動複製程式碼所需的 using 指示詞。

操作方式

  1. 從檔案複製程式碼,並將其貼到新檔案中,而無需包含必要的 using 指示詞。產生的錯誤會隨附程式碼修正,以新增遺失的 using 指示詞。
  2. 選取 ⌘. (Windows、Linux Ctrl+.) 以開啟 [快速動作與重構] 功能表。
  3. 選取 [Using <您的參考>] 以新增遺失的參考。

Add missing  / imports example

新增具名引數

用途: 將具名引數附加至函式呼叫中指定的參數值。

時機: 如果您有一個具有許多參數的方法,您可以新增具名引數,讓您的程式碼更具可讀性。

操作方式

  1. 將游標放在函式呼叫中的參數內。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [新增引數名稱 <參數名稱>]。

Add named argument example

將匿名型別轉換為類別

用途: 將匿名型別轉換為類別。

時機: 您有一個匿名型別,您想要繼續在類別中進行建置。

原因: 如果您僅在本機使用匿名型別,則它們會很有用。隨著程式碼成長,最好有一個簡單的方法將其升級為類別。

操作方式

  1. 將游標放在匿名 (var) 型別中。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [轉換為類別]。

Convert anonymous type to class example

在自動屬性和完整屬性之間轉換

用途: 在自動實作屬性和完整屬性之間轉換。

時機: 屬性的邏輯已變更。

原因: 您可以在自動實作屬性和完整屬性之間手動轉換,但此功能會自動為您完成工作。

操作方式

  1. 將游標放在屬性名稱上。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 從下列兩個選項中選取

選取 [轉換為完整屬性。]。

Convert to full property example

選取 [使用自動屬性。]。

Use auto property example

在直接轉換和 'as' 運算式之間轉換

用途: 使用 as 關鍵字在一般轉換和嘗試轉換之間轉換變數。

時機: 當您預期轉換在某些情況下會失敗 (as),或者如果您從未預期轉換會失敗 (直接轉換)。

操作方式

  1. 將游標放在變數上。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 從下列兩個選項中選取

選取 [變更為轉換]。

Change to cast example

選取 [變更為 as 運算式。]。

Change to  expression example

在 for 迴圈和 foreach 陳述式之間轉換

用途: 如果您的程式碼中有 for 迴圈,您可以使用此重構將其轉換為 foreach 陳述式。

原因: 您可能想要將 for 迴圈轉換為 foreach 陳述式的原因包括

  • 您在迴圈內未使用本機迴圈變數,除非作為索引來存取項目。
  • 您想要簡化程式碼,並減少初始化運算式、條件和迭代器區段中邏輯錯誤的可能性。

您可能想要將 foreach 陳述式轉換為 for 迴圈的原因包括

  • 您想要在迴圈內使用本機迴圈變數,而不僅僅是存取項目。
  • 您正在逐一查看多維陣列,並且想要更充分地控制陣列元素。

操作方式

  1. 將插入號放在 foreachfor 關鍵字中。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 從下列兩個選項中選取

選取 [轉換為 for]。

Convert to  example

選取 [轉換為 foreach]。

Convert to

在 Get 方法和屬性之間轉換

將 Get 方法轉換為屬性

用途: 讓您可以將 Get 方法轉換為屬性 (以及選擇性地轉換 Set 方法)。

時機: 您有一個不包含任何邏輯的 Get 方法。

操作方式

  1. 將游標放在 Get 方法名稱中。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. (選用) 如果您有 Set 方法,您也可以在此時轉換 Set 方法。選取 [將 <Get 方法或 Set 方法名稱> 取代為屬性]。

Replace Get method with property example

將屬性轉換為 Get 方法

用途: 讓您可以將屬性轉換為 Get 方法

時機: 您有一個屬性,其牽涉到的不僅僅是立即設定和取得值

操作方式

  1. 將游標放在 Get 方法名稱中。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [將 <屬性名稱> 取代為方法]。

Replace property name with method example

在 if 和 switch 陳述式之間轉換

用途:if 陳述式轉換為 switch 陳述式,或轉換為 C# 8.0 switch 運算式

時機: 您想要將 if 陳述式轉換為 switch 陳述式或 switch 運算式,反之亦然。

原因: 如果您使用 if 陳述式,此重構可輕鬆轉換為 switch 陳述式或 switch 運算式。

操作方式

  1. 將游標放在 if 關鍵字中。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 從下列選項中選取

選取 [轉換為 switch 陳述式]。

Convert to  statement example

選取 [轉換為 switch 運算式]。

Convert to  expression example

選取 [轉換為 if 陳述式]。

Convert to  statement example

在一般字串和逐字字串之間轉換

用途: 讓您可以在一般字串常值和逐字字串常值之間轉換。

時機: 您想要節省空間或在程式碼中提供更多清晰度。

原因: 將逐字字串常值轉換為一般字串常值有助於節省空間。將一般字串常值轉換為逐字字串常值可以提供更多清晰度。

操作方式

  1. 將插入號放在一般字串或逐字字串常值上
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 從下列其中一個選項中選取

選取 [轉換為一般字串]。

選取 [轉換為逐字字串]。

將類別轉換為記錄

用途: 將您的類別轉換為 C# 記錄。

時機: 當您想要快速將類別變更為記錄時,記錄是針對儲存資料和不可變性而量身打造的。

操作方式

  1. 將游標放在類別名稱上。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [轉換為位置記錄]。

Convert class to record before example

Convert class to record after example

將本機函式轉換為方法

用途: 將本機函式轉換為方法。

時機: 您有一個本機函式,想要在目前的本機內容外部定義。

原因: 您想要將本機函式轉換為方法,以便在本機內容外部呼叫它。當本機函式變得太長時,您可能會想要轉換為方法。當您在個別方法中定義函式時,您的程式碼會更易於閱讀。

操作方式

  1. 將游標放在本機函式中。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [轉換為方法]。

Convert local function to method example

將數值常值轉換為十六進位、十進位或二進位數字

用途: 在十六進位、二進位或十進位數字之間轉換數字。

時機: 當您想要自動將數字轉換為所需的基底,而無需手動計算轉換時使用。

操作方式

  1. 將游標放在數值常值上。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取下列其中一個選項

選取 [轉換為十進位]。

Convert to decimal example

選取 [轉換為十六進位]。

Convert to hex example

選取 [轉換為二進位]。

Convert to binary example

將預留位置轉換為插補字串

用途:String.Format 格式化結果字串 (或預留位置) 轉換為插補字串。

時機: 當您想要快速取得插補字串時使用。

原因: 插補字串可以為您提供更易於閱讀的 String.Format 版本,並可讓您直接存取變數名稱。

操作方式

  1. 將游標放在 String.Format 預留位置上。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [轉換為插補字串]。

Convert placeholder to interpolated string example

將一般字串轉換為插補字串

用途: 將一般字串變更為插補字串。

時機: 當您想要清理程式碼並使其更具可讀性時使用。

操作方式

  1. 將游標放在您想要轉換的字串上。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [轉換為插補字串]。

Convert to interpolated string before example

Convert to interpolated string after example

將元組轉換為結構

用途: 將您的元組轉換為 struct

時機: 當您想要快速將元組變更為 struct,並想要擁有您想要多次存取的固定資料時使用。

操作方式

  1. 將游標放在元組上。

  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。

  3. 選取下列其中一個選項

    • 選取 [轉換為 struct -> 更新包含成員中的用法]
    • 選取 [轉換為 struct -> 更新包含型別中的用法]
    • 選取 [轉換為 struct -> 更新包含專案中的用法]
    • 選取 [轉換為 struct -> 更新相依專案中的用法]

Convert tuple to  options

Convert tuple to  example

封裝欄位

用途: 讓您可以將欄位轉換為屬性,並更新該欄位的所有用法以使用新建立的屬性。

時機: 您想要將欄位移至屬性,並更新對該欄位的所有參考。

原因: 您想要讓其他類別存取欄位,但不希望這些類別具有直接存取權。藉由將欄位包裝在屬性中,您可以撰寫程式碼來驗證要指派的值,例如。

操作方式

  1. 將游標放在要封裝的欄位名稱內。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取下列其中一個

選取 [封裝欄位: <欄位名稱> (並使用屬性)]。

Encapsulate field and use property example

選取 [封裝欄位: <欄位名稱> (但仍使用欄位)]。

Encapsulate field but still use field example

產生比較運算子

用途: 讓您可以為實作 IComparable 的型別產生比較運算子。

時機: 您有一個實作 IComparable 的型別,我們會自動新增比較運算子。

原因: 如果您實作實值型別,您應該考慮覆寫 Equals 方法,以獲得比 ValueTypeEquals 方法的預設實作更高的效能。

操作方式

  1. 將游標放在類別內或 IComparable 關鍵字上。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 從下拉式功能表中選取 [產生比較運算子]。

產生預設建構函式

用途: 讓您可以立即在類別上產生新的預設建構函式的程式碼。

時機: 您引入新的預設建構函式,並想要自動正確地宣告它時。

原因: 您可以在使用建構函式之前宣告它,但此功能會自動產生它。

操作方式

  1. 將游標放在類別名稱上。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [產生建構函式 <類別名稱>()]。

Generate default constructor example

產生參數

用途: 自動產生方法參數。

時機: 您在方法中參考目前內容中不存在的變數並收到錯誤訊息;您可以產生參數作為程式碼修正。

原因: 您可以快速修改方法簽章,而不會遺失內容。

操作方式

  1. 將游標放在變數名稱中。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [產生參數]。

Generate parameter example

明確實作所有成員

用途: 在類別中明確定義介面的方法。明確介面實作是僅透過指定的介面呼叫的類別成員。

時機: 在下列情況下使用

  • 您不希望針對多個介面呼叫相同的實作。
  • 您想要解決兩個介面各自宣告名稱相同的不同成員的情況,例如屬性和方法。

操作方式

  1. 將游標放在類別中實作的介面上。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [明確實作所有成員]

Implement all members explicitly example

隱含實作所有成員

用途: 在類別中隱含定義介面的方法。隱含介面實作是指介面的方法和屬性直接新增至類別作為公用方法。

操作方式

  1. 將游標放在類別中實作的介面上。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [實作介面]

Implement all members implicitly

內嵌方法

用途: 內嵌方法重構。

時機: 您想要使用單一陳述式主體中的靜態、執行個體和擴充方法用法取代,並選擇性地移除原始方法宣告。

原因: 此重構提供更清晰的語法。

操作方式

  1. 將插入號放在方法的使用方式上。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 從下列其中一個選項中選取

選取 [內嵌 <完整方法名稱>] 以移除內嵌方法宣告

Inline method example

選取 [內嵌並保留 <完整方法名稱>] 以保留原始方法宣告

Inline and keep method example

內嵌暫時變數

用途: 讓您可以移除暫時變數,並改為以其值取代。

時機: 暫時變數的使用讓程式碼更難以理解。

原因: 移除暫時變數可能會使程式碼更易於閱讀。

操作方式

  1. 將游標放在要內嵌的暫時變數內。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [內嵌暫時變數]。

Inline temporary variable example

為運算式引入本機變數

用途: 讓您可以立即產生本機變數,以取代現有的運算式。

時機: 您的程式碼如果放在本機變數中,稍後可以輕鬆重複使用。

原因: 您可以多次複製並貼上程式碼,以便在各種位置使用它,但最好執行一次作業,將結果儲存在本機變數中,並在整個過程中使用本機變數。

操作方式

  1. 將插入號放在您想要指派給新本機變數的運算式上。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 從下列選項中選取

選取 [引入本機 -> 為 <運算式> 引入本機]

Introduce local for expression example

選取 [引入本機 -> 為 <運算式> 的所有出現次數引入本機]

引入參數

用途: 讓您可以立即產生新的參數,以取代現有的運算式。

時機: 您的程式碼如果放在參數中,稍後可以輕鬆重複使用。

原因: 您可以多次複製並貼上程式碼,以便在各種位置使用它,但最好執行一次作業,將結果儲存在參數中,並在整個過程中使用參數。

操作方式

  1. 將插入號放在您想要指派給新參數的運算式上。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 從下列選項中選取

選取 [為 <運算式> 引入參數 -> 並直接更新呼叫位置]

Update call sites directly example

選取 [為 <運算式> 引入參數 -> 放入擷取的方法中]

Introduce parameter into extracted method example

選取 [為 <運算式> 引入參數 -> 放入新的多載]

Introduce parameter into new overload example

引入 using 陳述式

用途:using 陳述式/程式碼區塊新增至您的 IDisposable 執行個體。

時機: 您有一個 IDisposable 執行個體,想要確保已正確取得、使用和處置。

操作方式

  1. 將插入號放在您想要指派給新參數的運算式上。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [引入 using 陳述式]。

Introduce  statement example

反轉條件運算式和邏輯運算

用途: 讓您可以反轉條件運算式或條件 and \ or 運算子。

時機: 您有一個條件運算式或條件 and \ or 運算子,如果反轉會更容易理解。

原因: 手動反轉運算式或條件 and \ or 運算子可能需要更長的時間,並可能引入錯誤。此程式碼修正可協助您自動執行此重構。

操作方式

  1. 將游標放在條件運算式或條件 and \ or 運算子中。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [反轉條件] 或 [&& 取代為 ||]

Invert conditional example

Replace  with  example

反轉 if

用途: 讓您可以反轉 ifif else 陳述式,而不會變更程式碼的意義。

時機: 當您有一個 ifif else 陳述式,在反轉時會更容易理解。

原因: 手動反轉 ifif else 陳述式可能需要更長的時間,並可能引入錯誤。此程式碼修正可協助您自動執行此重構。

操作方式

  1. 將游標放在 ifif else 陳述式中。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [反轉 if]。

Invert  example

將成員設為靜態

用途: 將成員設為靜態。

時機: 您想要將非靜態成員設為靜態。

原因: 靜態成員可提高可讀性:知道特定程式碼已隔離,可讓您更輕鬆地理解、重新閱讀和重複使用。

操作方式

  1. 將插入號放在成員名稱上。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [設為靜態]。

Make member static example

將宣告移至參考附近

用途: 讓您可以將變數宣告移近其使用方式。

時機: 您的變數宣告可以在更窄的範圍內。

原因: 您可以保持原狀,但可能會導致可讀性問題或資訊隱藏。這是重構以提高可讀性的機會。

操作方式

  1. 將游標放在變數宣告中。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [將宣告移至參考附近]。

Move declaration near reference example

將型別移至相符的檔案

用途: 讓您可以將選取的型別移至具有相同名稱的個別檔案。

時機: 您在同一個檔案中有多個類別、結構、介面等,而您想要分隔它們。

原因: 將多個型別放在同一個檔案中可能會讓您難以找到這些型別。藉由將型別移至具有相同名稱的檔案,程式碼會變得更易於閱讀且更易於導覽。

操作方式

  1. 將游標放在定義型別的名稱內。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [將型別移至 <型別名稱>.cs]。

Move type to matching file example

反轉 for 陳述式

用途: 讓您可以反轉 for 陳述式。

時機: 當您想要反轉 for 陳述式的意義及其迭代方式時使用。

原因: 手動反轉 for 陳述式可能需要更長的時間,並可能引入錯誤。此程式碼修正可協助您自動執行此重構。

操作方式

  1. 將游標放在 for 陳述式中。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [反轉 for 陳述式]。

Reverse  statements example

分割或合併 if 陳述式

用途: 分割或合併 if 陳述式。

時機: 當您想要將使用 &&|| 運算子的 if 陳述式,拆分為巢狀 if 陳述式,或是將 if 陳述式與外部 if 陳述式合併時。

原因: 這純粹是風格偏好的問題。

操作方式

如果您想要拆分 if 陳述式

  1. 將游標放在 if 陳述式中,&&|| 運算子旁邊。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [拆分為巢狀 if 陳述式]。

Split into nested  statements example

如果您想要將內部 if 陳述式與外部 if 陳述式合併

  1. 將游標放在內部 if 關鍵字上。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [與巢狀 if 陳述式合併]。

Merge with nested  statements example

使用明確型別

用途: 使用此重構功能,以明確型別取代區域變數宣告中的 var

原因: 為了改善程式碼的可讀性,或當您不想在宣告中初始化變數時。

但是,當變數使用匿名型別初始化,且稍後會存取物件的屬性時,必須使用 var。如需詳細資訊,請參閱隱含型別區域變數 (C#)

操作方式

  1. 將插入號放在 var 關鍵字上。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [使用明確型別取代 var]。

Use explicit type instead of  example

使用隱含型別

用途: 使用此重構功能,以 var 取代區域變數宣告中的明確型別。

原因: 為了符合您的個人編碼慣例,並減少顯示的程式碼。Var 必須在變數使用匿名型別初始化,且稍後會存取物件的屬性時使用。如需詳細資訊,請參閱隱含型別區域變數 (C#)

操作方式

  1. 將插入號放在明確型別關鍵字上。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [使用隱含型別]。

Use implicit type example

使用 Lambda 運算式或區塊主體

用途: 讓您重構 Lambda 運算式,以使用運算式主體或區塊主體。

時機: 您偏好 Lambda 運算式使用運算式主體或區塊主體。

原因: 可以重構 Lambda 運算式,以根據您的使用者偏好改善可讀性。

操作方式

  1. 將游標放在 Lambda 運算子的右側。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取下列其中一個

選取 [為 Lambda 運算式使用區塊主體]。

Use block body for lambda expressions example

選取 [為 Lambda 運算式使用運算式主體]。

Use expression body for lambda expressions

使用遞迴模式

用途: 將程式碼區塊轉換為使用遞迴模式。此重構功能適用於 switch 陳述式、屬性模式比對、元組模式比對和位置模式比對。

時機: 使用遞迴模式可以讓您的程式碼更具可讀性/更簡潔。

操作方式

  1. 將游標放在您想要轉換為遞迴模式的運算式上。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取下列其中一個

選取 [switch 陳述式轉換為運算式]。

Convert  statement to expression example

選取 [使用遞迴模式]。

Use recursive patterns before example

Use recursive patterns after example

包裝、縮排和對齊重構

包裝和對齊呼叫鏈

用途: 讓您包裝和對齊方法呼叫鏈。

時機: 您有一個由一個陳述式中的多個方法呼叫組成的長鏈。

原因: 當長列表根據使用者偏好包裝或縮排時,會更容易閱讀。

操作方式

  1. 將游標放在任何呼叫鏈中。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [包裝呼叫鏈] 或 [包裝並對齊呼叫鏈] 以接受重構。

Wrap and align call chain example

包裝、縮排和對齊參數或引數

用途: 讓您包裝、縮排和對齊參數或引數。

時機: 您有一個方法宣告或呼叫,其中包含多個參數或引數。

原因: 當參數或引數的長列表根據使用者偏好包裝或縮排時,會更容易閱讀。

操作方式

  1. 將游標放在參數清單中。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 從下列選項中選取

選取 [包裝每個參數 -> 對齊包裝的參數]。

Align wrapped parameters example

選取 [包裝每個參數 -> 縮排所有參數]。

Indent all parameters example

選取 [包裝每個參數 -> 縮排包裝的參數]。

Indent wrapped parameters example

包裝二元運算式

用途: 讓您包裝二元運算式。

時機: 您有一個二元運算式。

原因: 當二元運算式根據使用者偏好包裝時,會更容易閱讀。

操作方式

  1. 將游標放在二元運算式中。
  2. 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
  3. 選取 [包裝運算式] 以接受重構。

Wrap expression example