現已釋出!閱讀關於 11 月新增功能和修復的內容。

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. 選擇“**新增檔案頭**”。

新增缺失的 usings/匯入

內容: 允許您立即為複製貼上的程式碼新增必要的匯入或 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 關鍵字的嘗試強制轉換之間進行轉換。

時機: 當您預計強制轉換在某些情況下會失敗 (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 方法,以相對於 ValueType 的預設 Equals 方法實現獲得更高的效能。

操作方法

  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 語句

內容: 為您的 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

將型別移至匹配的檔案

內容: 允許您將選定的型別移至同名的單獨檔案中。

時機: 您在同一檔案中擁有多個類、結構體、介面等,並希望將它們分開。

原因: 將多個型別放在同一個檔案中會使查詢這些型別變得困難。透過將型別移到同名檔案中,程式碼會更具可讀性,更易於導航。

操作方法

  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

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