C# 快速動作與重構

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

支援的重構與快速修復

新增 await

功能:await 關鍵字新增至函式呼叫。

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

操作方式

  1. 將游標放置在函式呼叫旁(通常會以紅色底線標示)。
  2. 按下 ⌘. (Windows, Linux Ctrl+.) 以觸發快速動作與重構選單。
  3. 選取新增 await

Add await example

從成員新增建構函式參數

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

時機:當您引入新的建構函式,並希望自動以所有正確參數來正確宣告它時。

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

操作方式

  1. 反白顯示您想要在建構函式中新增為參數的類別成員。
  2. 按下 ⌘. (Windows, Linux Ctrl+.) 以觸發快速動作與重構選單。
  3. 選取產生建構函式 <classname>(<membertype>, <membertype>, <etc.>)

Add constructor parameters from members example

新增 DebuggerDisplay 屬性

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

時機:當您想要在程式碼中透過程式設計方式釘選屬性時。

原因:釘選屬性可讓您透過將屬性提升至偵錯工具中物件屬性清單的頂端,藉此快速檢查物件屬性。

操作方式

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

Add DebuggerDisplay attribute example

新增明確轉型 (explicit cast)

功能:根據使用方式,自動為運算式新增明確轉型。

時機:當您需要為運算式新增明確轉型,並希望自動正確指派它時。

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

操作方式

  1. 將游標放置在錯誤處。
  2. 按下 ⌘. (Windows, Linux Ctrl+.) 以觸發快速動作與重構選單。
  3. 選取新增明確轉型

新增檔案標頭

功能:使用 EditorConfig 將檔案標頭新增至現有的檔案、專案與解決方案。

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

原因:您的團隊要求必須包含檔案標頭以符合著作權規定。

操作方式

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

新增遺漏的 usings / imports

功能:讓您能立即為複製貼上的程式碼新增必要的匯入或 using 指示詞。

時機:將程式碼從專案的不同位置或其他來源複製並貼到新程式碼中是常見的做法。此快速動作會尋找複製貼上程式碼中遺漏的匯入指示詞,並提示您將其新增。此程式碼修復也可以新增跨專案的參考。

原因:因為快速動作會自動新增必要的匯入,所以您不需要手動複製程式碼所需的 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 關鍵字的嘗試轉型 (try cast) 之間轉換變數。

時機:當您預期轉型在某些情況下會失敗 (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 方法,此時也可以一併轉換。選取 以屬性取代 <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. 從下列選項中擇一選取

選取 轉換為一般字串

選取 轉換為逐字字串

將類別轉換為 record

功能:將您的類別轉換為 C# record。

時機:當您想要快速將類別變更為 record(專為資料儲存與不可變性而設計)時。

操作方式

  1. 將游標放置在類別名稱上。
  2. 按下 ⌘. (Windows, Linux Ctrl+.) 以觸發快速動作與重構選單。
  3. 選取 轉換為位置 record (positional record)

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

將 tuple 轉換為 struct

功能:將您的 tuple 轉換為 struct

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

操作方式

  1. 將游標放置在 tuple 上。

  2. 按下 ⌘. (Windows, Linux Ctrl+.) 以觸發快速動作與重構選單。

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

    • 選取 轉換為 struct -> 更新所在成員中的使用方式
    • 選取 轉換為 struct -> 更新所在類型中的使用方式
    • 選取 轉換為 struct -> 更新所在專案中的使用方式
    • 選取 轉換為 struct -> 更新相依專案中的使用方式

Convert tuple to  options

Convert tuple to  example

封裝欄位

功能:讓您將欄位轉換為屬性,並更新該欄位的所有使用方式以使用新建立的屬性。

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

原因:您想要讓其他類別存取欄位,但又不希望這些類別直接存取。透過將欄位封裝在屬性中,例如,您可以編寫程式碼來驗證指派的值。

操作方式

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

選取 封裝欄位: <fieldname> (並使用屬性)

Encapsulate field and use property example

選取 封裝欄位: <fieldname> (但仍使用欄位)

Encapsulate field but still use field example

產生比較運算子

功能:讓您為實作 IComparable 的類型產生比較運算子。

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

原因:如果您正在實作數值類型,則應考慮覆寫 Equals 方法,以獲得比 ValueTypeEquals 方法的預設實作更好的效能。

操作方式

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

產生預設建構函式

功能:讓您立即為類別產生新的預設建構函式程式碼。

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

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

操作方式

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

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. 從下列選項中擇一選取

選取 內嵌 <QualifiedMethodName> 以移除內嵌的方法宣告

Inline method example

選取 內嵌並保留 <QualifiedMethodName> 以保留原始方法宣告

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 陳述式

功能:為您的 IDisposable 執行個體新增 using 陳述式 / 程式碼區塊。

時機:您有一個 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

將類型移至對應檔案

功能:讓您將選取的類型移至具有相同名稱的單獨檔案中。

時機:同一個檔案中有不想放在一起的多個類別、struct、介面等。

原因:將多個類型放在同一個檔案中可能很難找到這些類型。透過將類型移至同名檔案,程式碼變得更易讀且更易於瀏覽。

操作方式

  1. 將游標放置在類型定義的名稱內。
  2. 按下 ⌘. (Windows, Linux Ctrl+.) 以觸發快速動作與重構選單。
  3. 選取 將類型移至 <typename>.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 陳述式、屬性模式比對、tuple 模式比對與位置模式比對。

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

操作方式

  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

© . This site is unofficial and not affiliated with Microsoft.