C# 快速動作與重構
Visual Studio Code 提供多種方式來重構原始碼,以及快速修正功能,可在您撰寫程式碼時產生程式碼並修正問題。若要存取這些功能,請按一下出現的「燈泡」圖示,或使用 快速修正 命令 ⌘. (Windows、Linux Ctrl+.) 來顯示快速修正和重構選項的清單。您也可以在編輯器上按一下滑鼠右鍵,然後選取 [重構] ⌃⇧R (Windows、Linux Ctrl+Shift+R) 以僅顯示重構選項。
支援的重構和快速修正
- 新增
await
- 從成員新增建構函式參數
- 新增
DebuggerDisplay
屬性 - 新增明確轉換
- 新增檔案標頭
- 新增遺失的
usings
/imports - 新增具名引數
- 將匿名型別轉換為類別
- 在自動屬性和完整屬性之間轉換
- 在直接轉換和
as
運算式之間轉換 - 在
for
迴圈和foreach
陳述式之間轉換 - 在 Get 方法和屬性之間轉換
- 在
if
和switch
陳述式之間轉換 - 在一般字串和逐字字串之間轉換
- 將類別轉換為記錄
- 將本機函式轉換為方法
- 將數值常值轉換為十六進位、十進位或二進位數字
- 將預留位置轉換為插補字串
- 將一般字串轉換為插補字串
- 將元組轉換為結構
- 封裝欄位
- 產生比較運算子
- 產生預設建構函式
- 產生參數
- 明確實作所有成員
- 隱含實作所有成員
- 內嵌方法
- 內嵌暫時變數
- 為運算式引入本機變數
- 引入參數
- 引入
using
陳述式 - 反轉條件運算式和邏輯運算
- 反轉
if
- 將成員設為靜態
- 將宣告移至參考附近
- 將型別移至相符的檔案
- 反轉
for
陳述式 - 分割或合併
if
陳述式 - 使用明確型別
- 使用隱含型別
- 使用 Lambda 運算式或區塊主體
- 使用遞迴模式
- 包裝、縮排和對齊重構
新增 await
用途: 將 await
關鍵字新增至函式呼叫。
時機: 在非同步方法中呼叫函式時。
操作方式
- 將插入號放在函式呼叫旁 (很可能會以紅色底線標示)。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [新增
await
]。
從成員新增建構函式參數
用途: 根據選取的類別成員,產生具有參數的新建構函式。
時機: 您引入新的建構函式,並想要自動正確地宣告它以及所有正確的參數時。
原因: 您可以在使用建構函式之前宣告它,但此功能會自動產生它。
操作方式
- 醒目提示您想要在建構函式中新增為參數的類別成員。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [產生建構函式 <類別名稱>(<成員類型>、<成員類型> 等)]。
新增 DebuggerDisplay 屬性
用途: DebuggerDisplay 屬性控制物件、屬性或欄位在偵錯工具變數視窗中的顯示方式。
時機: 您想要在程式碼中以程式設計方式釘選屬性在偵錯工具中。
原因: 釘選屬性可讓您快速檢查物件,方法是將該屬性向上浮動到偵錯工具中物件的屬性清單頂端。
操作方式
- 將游標放在型別、委派、屬性或欄位上。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表,然後選取 [新增
DebuggerDisplay
屬性]。 DebuggerDisplay
屬性會與傳回預設ToString()
的自動方法一起新增。
新增明確轉換
用途: 讓您可以根據使用方式,自動將明確轉換新增至運算式。
時機: 您需要將明確轉換新增至運算式,並想要自動正確地指派它時。
原因: 您可以手動將明確轉換新增至運算式,但此功能會根據程式碼內容自動新增它。
操作方式
- 將插入號放在錯誤上。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [新增明確轉換]。
新增檔案標頭
用途: 使用 EditorConfig 將檔案標頭新增至現有的檔案、專案和方案。
時機: 您想要輕鬆地將檔案標頭新增至檔案、專案和方案時。
原因: 您的團隊要求您包含檔案標頭以用於著作權目的。
操作方式
- 如果您還沒有 EditorConfig,請將其新增至專案或方案。
- 將下列規則新增至您的 EditorConfig 檔案:
file_header_template
。 - 將規則的值設定為等於您想要套用的標頭文字。您可以使用
{fileName}
作為檔案名稱的預留位置。 - 將插入號放在任何 C# 檔案的第一行。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [新增檔案標頭]。
新增遺失的 using/imports
用途: 讓您可以立即為複製貼上的程式碼新增必要的 imports 或 using 指示詞。
時機: 從專案或其他來源的不同位置複製程式碼,並將其貼到新程式碼中是很常見的做法。此快速動作會尋找複製貼上程式碼中遺失的 imports 指示詞,然後提示您新增這些指示詞。此程式碼修正也能新增從專案到專案的參考。
原因: 因為快速動作會自動新增必要的 imports,所以您不需要手動複製程式碼所需的 using 指示詞。
操作方式
- 從檔案複製程式碼,並將其貼到新檔案中,而無需包含必要的 using 指示詞。產生的錯誤會隨附程式碼修正,以新增遺失的 using 指示詞。
- 選取 ⌘. (Windows、Linux Ctrl+.) 以開啟 [快速動作與重構] 功能表。
- 選取 [Using <您的參考>] 以新增遺失的參考。
新增具名引數
用途: 將具名引數附加至函式呼叫中指定的參數值。
時機: 如果您有一個具有許多參數的方法,您可以新增具名引數,讓您的程式碼更具可讀性。
操作方式
- 將游標放在函式呼叫中的參數內。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [新增引數名稱 <參數名稱>]。
將匿名型別轉換為類別
用途: 將匿名型別轉換為類別。
時機: 您有一個匿名型別,您想要繼續在類別中進行建置。
原因: 如果您僅在本機使用匿名型別,則它們會很有用。隨著程式碼成長,最好有一個簡單的方法將其升級為類別。
操作方式
- 將游標放在匿名 (
var
) 型別中。 - 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [轉換為類別]。
在自動屬性和完整屬性之間轉換
用途: 在自動實作屬性和完整屬性之間轉換。
時機: 屬性的邏輯已變更。
原因: 您可以在自動實作屬性和完整屬性之間手動轉換,但此功能會自動為您完成工作。
操作方式
- 將游標放在屬性名稱上。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 從下列兩個選項中選取
選取 [轉換為完整屬性。]。
選取 [使用自動屬性。]。
在直接轉換和 'as' 運算式之間轉換
用途: 使用 as
關鍵字在一般轉換和嘗試轉換之間轉換變數。
時機: 當您預期轉換在某些情況下會失敗 (as
),或者如果您從未預期轉換會失敗 (直接轉換)。
操作方式
- 將游標放在變數上。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 從下列兩個選項中選取
選取 [變更為轉換]。
選取 [變更為 as
運算式。]。
在 for 迴圈和 foreach 陳述式之間轉換
用途: 如果您的程式碼中有 for 迴圈,您可以使用此重構將其轉換為 foreach 陳述式。
原因: 您可能想要將 for 迴圈轉換為 foreach 陳述式的原因包括
- 您在迴圈內未使用本機迴圈變數,除非作為索引來存取項目。
- 您想要簡化程式碼,並減少初始化運算式、條件和迭代器區段中邏輯錯誤的可能性。
您可能想要將 foreach 陳述式轉換為 for 迴圈的原因包括
- 您想要在迴圈內使用本機迴圈變數,而不僅僅是存取項目。
- 您正在逐一查看多維陣列,並且想要更充分地控制陣列元素。
操作方式
- 將插入號放在
foreach
或for
關鍵字中。 - 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 從下列兩個選項中選取
選取 [轉換為 for
]。
選取 [轉換為 foreach
]。
在 Get 方法和屬性之間轉換
將 Get 方法轉換為屬性
用途: 讓您可以將 Get 方法轉換為屬性 (以及選擇性地轉換 Set 方法)。
時機: 您有一個不包含任何邏輯的 Get 方法。
操作方式
- 將游標放在 Get 方法名稱中。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- (選用) 如果您有 Set 方法,您也可以在此時轉換 Set 方法。選取 [將 <Get 方法或 Set 方法名稱> 取代為屬性]。
將屬性轉換為 Get 方法
用途: 讓您可以將屬性轉換為 Get 方法
時機: 您有一個屬性,其牽涉到的不僅僅是立即設定和取得值
操作方式
- 將游標放在 Get 方法名稱中。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [將 <屬性名稱> 取代為方法]。
在 if 和 switch 陳述式之間轉換
用途: 將 if
陳述式轉換為 switch 陳述式,或轉換為 C# 8.0 switch 運算式。
時機: 您想要將 if
陳述式轉換為 switch
陳述式或 switch
運算式,反之亦然。
原因: 如果您使用 if
陳述式,此重構可輕鬆轉換為 switch 陳述式或 switch 運算式。
操作方式
- 將游標放在
if
關鍵字中。 - 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 從下列選項中選取
選取 [轉換為 switch
陳述式]。
選取 [轉換為 switch
運算式]。
選取 [轉換為 if
陳述式]。
在一般字串和逐字字串之間轉換
用途: 讓您可以在一般字串常值和逐字字串常值之間轉換。
時機: 您想要節省空間或在程式碼中提供更多清晰度。
原因: 將逐字字串常值轉換為一般字串常值有助於節省空間。將一般字串常值轉換為逐字字串常值可以提供更多清晰度。
操作方式
- 將插入號放在一般字串或逐字字串常值上
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 從下列其中一個選項中選取
選取 [轉換為一般字串]。
選取 [轉換為逐字字串]。
將類別轉換為記錄
用途: 將您的類別轉換為 C# 記錄。
時機: 當您想要快速將類別變更為記錄時,記錄是針對儲存資料和不可變性而量身打造的。
操作方式
- 將游標放在類別名稱上。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [轉換為位置記錄]。
將本機函式轉換為方法
用途: 將本機函式轉換為方法。
時機: 您有一個本機函式,想要在目前的本機內容外部定義。
原因: 您想要將本機函式轉換為方法,以便在本機內容外部呼叫它。當本機函式變得太長時,您可能會想要轉換為方法。當您在個別方法中定義函式時,您的程式碼會更易於閱讀。
操作方式
- 將游標放在本機函式中。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [轉換為方法]。
將數值常值轉換為十六進位、十進位或二進位數字
用途: 在十六進位、二進位或十進位數字之間轉換數字。
時機: 當您想要自動將數字轉換為所需的基底,而無需手動計算轉換時使用。
操作方式
- 將游標放在數值常值上。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取下列其中一個選項
選取 [轉換為十進位]。
選取 [轉換為十六進位]。
選取 [轉換為二進位]。
將預留位置轉換為插補字串
用途: 將 String.Format
格式化結果字串 (或預留位置) 轉換為插補字串。
時機: 當您想要快速取得插補字串時使用。
原因: 插補字串可以為您提供更易於閱讀的 String.Format
版本,並可讓您直接存取變數名稱。
操作方式
- 將游標放在
String.Format
預留位置上。 - 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [轉換為插補字串]。
將一般字串轉換為插補字串
用途: 將一般字串變更為插補字串。
時機: 當您想要清理程式碼並使其更具可讀性時使用。
操作方式
- 將游標放在您想要轉換的字串上。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [轉換為插補字串]。
將元組轉換為結構
用途: 將您的元組轉換為 struct
時機: 當您想要快速將元組變更為 struct
,並想要擁有您想要多次存取的固定資料時使用。
操作方式
-
將游標放在元組上。
-
按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
-
選取下列其中一個選項
- 選取 [轉換為
struct
-> 更新包含成員中的用法] - 選取 [轉換為
struct
-> 更新包含型別中的用法] - 選取 [轉換為
struct
-> 更新包含專案中的用法] - 選取 [轉換為
struct
-> 更新相依專案中的用法]
- 選取 [轉換為
封裝欄位
用途: 讓您可以將欄位轉換為屬性,並更新該欄位的所有用法以使用新建立的屬性。
時機: 您想要將欄位移至屬性,並更新對該欄位的所有參考。
原因: 您想要讓其他類別存取欄位,但不希望這些類別具有直接存取權。藉由將欄位包裝在屬性中,您可以撰寫程式碼來驗證要指派的值,例如。
操作方式
- 將游標放在要封裝的欄位名稱內。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取下列其中一個
選取 [封裝欄位: <欄位名稱> (並使用屬性)]。
選取 [封裝欄位: <欄位名稱> (但仍使用欄位)]。
產生比較運算子
用途: 讓您可以為實作 IComparable
的型別產生比較運算子。
時機: 您有一個實作 IComparable
的型別,我們會自動新增比較運算子。
原因: 如果您實作實值型別,您應該考慮覆寫 Equals
方法,以獲得比 ValueType
上 Equals
方法的預設實作更高的效能。
操作方式
- 將游標放在類別內或 IComparable 關鍵字上。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 從下拉式功能表中選取 [產生比較運算子]。
產生預設建構函式
用途: 讓您可以立即在類別上產生新的預設建構函式的程式碼。
時機: 您引入新的預設建構函式,並想要自動正確地宣告它時。
原因: 您可以在使用建構函式之前宣告它,但此功能會自動產生它。
操作方式
- 將游標放在類別名稱上。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [產生建構函式 <類別名稱>()]。
產生參數
用途: 自動產生方法參數。
時機: 您在方法中參考目前內容中不存在的變數並收到錯誤訊息;您可以產生參數作為程式碼修正。
原因: 您可以快速修改方法簽章,而不會遺失內容。
操作方式
- 將游標放在變數名稱中。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [產生參數]。
明確實作所有成員
用途: 在類別中明確定義介面的方法。明確介面實作是僅透過指定的介面呼叫的類別成員。
時機: 在下列情況下使用
- 您不希望針對多個介面呼叫相同的實作。
- 您想要解決兩個介面各自宣告名稱相同的不同成員的情況,例如屬性和方法。
操作方式
- 將游標放在類別中實作的介面上。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [明確實作所有成員]
隱含實作所有成員
用途: 在類別中隱含定義介面的方法。隱含介面實作是指介面的方法和屬性直接新增至類別作為公用方法。
操作方式
- 將游標放在類別中實作的介面上。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [實作介面]
內嵌方法
用途: 內嵌方法重構。
時機: 您想要使用單一陳述式主體中的靜態、執行個體和擴充方法用法取代,並選擇性地移除原始方法宣告。
原因: 此重構提供更清晰的語法。
操作方式
- 將插入號放在方法的使用方式上。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 從下列其中一個選項中選取
選取 [內嵌 <完整方法名稱>] 以移除內嵌方法宣告
選取 [內嵌並保留 <完整方法名稱>] 以保留原始方法宣告
內嵌暫時變數
用途: 讓您可以移除暫時變數,並改為以其值取代。
時機: 暫時變數的使用讓程式碼更難以理解。
原因: 移除暫時變數可能會使程式碼更易於閱讀。
操作方式
- 將游標放在要內嵌的暫時變數內。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [內嵌暫時變數]。
為運算式引入本機變數
用途: 讓您可以立即產生本機變數,以取代現有的運算式。
時機: 您的程式碼如果放在本機變數中,稍後可以輕鬆重複使用。
原因: 您可以多次複製並貼上程式碼,以便在各種位置使用它,但最好執行一次作業,將結果儲存在本機變數中,並在整個過程中使用本機變數。
操作方式
- 將插入號放在您想要指派給新本機變數的運算式上。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 從下列選項中選取
選取 [引入本機 -> 為 <運算式> 引入本機]
選取 [引入本機 -> 為 <運算式> 的所有出現次數引入本機]
引入參數
用途: 讓您可以立即產生新的參數,以取代現有的運算式。
時機: 您的程式碼如果放在參數中,稍後可以輕鬆重複使用。
原因: 您可以多次複製並貼上程式碼,以便在各種位置使用它,但最好執行一次作業,將結果儲存在參數中,並在整個過程中使用參數。
操作方式
- 將插入號放在您想要指派給新參數的運算式上。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 從下列選項中選取
選取 [為 <運算式> 引入參數 -> 並直接更新呼叫位置]
選取 [為 <運算式> 引入參數 -> 放入擷取的方法中]
選取 [為 <運算式> 引入參數 -> 放入新的多載]
引入 using
陳述式
用途: 將 using
陳述式/程式碼區塊新增至您的 IDisposable
執行個體。
時機: 您有一個 IDisposable
執行個體,想要確保已正確取得、使用和處置。
操作方式
- 將插入號放在您想要指派給新參數的運算式上。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [引入
using
陳述式]。
反轉條件運算式和邏輯運算
用途: 讓您可以反轉條件運算式或條件 and
\ or
運算子。
時機: 您有一個條件運算式或條件 and
\ or
運算子,如果反轉會更容易理解。
原因: 手動反轉運算式或條件 and
\ or
運算子可能需要更長的時間,並可能引入錯誤。此程式碼修正可協助您自動執行此重構。
操作方式
- 將游標放在條件運算式或條件
and
\or
運算子中。 - 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [反轉條件] 或 [將
&&
取代為||
]
反轉 if
用途: 讓您可以反轉 if
或 if else
陳述式,而不會變更程式碼的意義。
時機: 當您有一個 if
或 if else
陳述式,在反轉時會更容易理解。
原因: 手動反轉 if
或 if else
陳述式可能需要更長的時間,並可能引入錯誤。此程式碼修正可協助您自動執行此重構。
操作方式
- 將游標放在
if
或if else
陳述式中。 - 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [反轉
if
]。
將成員設為靜態
用途: 將成員設為靜態。
時機: 您想要將非靜態成員設為靜態。
原因: 靜態成員可提高可讀性:知道特定程式碼已隔離,可讓您更輕鬆地理解、重新閱讀和重複使用。
操作方式
- 將插入號放在成員名稱上。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [設為靜態]。
將宣告移至參考附近
用途: 讓您可以將變數宣告移近其使用方式。
時機: 您的變數宣告可以在更窄的範圍內。
原因: 您可以保持原狀,但可能會導致可讀性問題或資訊隱藏。這是重構以提高可讀性的機會。
操作方式
- 將游標放在變數宣告中。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [將宣告移至參考附近]。
將型別移至相符的檔案
用途: 讓您可以將選取的型別移至具有相同名稱的個別檔案。
時機: 您在同一個檔案中有多個類別、結構、介面等,而您想要分隔它們。
原因: 將多個型別放在同一個檔案中可能會讓您難以找到這些型別。藉由將型別移至具有相同名稱的檔案,程式碼會變得更易於閱讀且更易於導覽。
操作方式
- 將游標放在定義型別的名稱內。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [將型別移至 <型別名稱>.cs]。
反轉 for 陳述式
用途: 讓您可以反轉 for
陳述式。
時機: 當您想要反轉 for
陳述式的意義及其迭代方式時使用。
原因: 手動反轉 for
陳述式可能需要更長的時間,並可能引入錯誤。此程式碼修正可協助您自動執行此重構。
操作方式
- 將游標放在
for
陳述式中。 - 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [反轉
for
陳述式]。
分割或合併 if 陳述式
用途: 分割或合併 if
陳述式。
時機: 當您想要將使用 &&
或 ||
運算子的 if
陳述式,拆分為巢狀 if
陳述式,或是將 if
陳述式與外部 if
陳述式合併時。
原因: 這純粹是風格偏好的問題。
操作方式
如果您想要拆分 if
陳述式
- 將游標放在
if
陳述式中,&&
或||
運算子旁邊。 - 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [拆分為巢狀
if
陳述式]。
如果您想要將內部 if
陳述式與外部 if
陳述式合併
- 將游標放在內部
if
關鍵字上。 - 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [與巢狀
if
陳述式合併]。
使用明確型別
用途: 使用此重構功能,以明確型別取代區域變數宣告中的 var
。
原因: 為了改善程式碼的可讀性,或當您不想在宣告中初始化變數時。
但是,當變數使用匿名型別初始化,且稍後會存取物件的屬性時,必須使用 var。如需詳細資訊,請參閱隱含型別區域變數 (C#)。
操作方式
- 將插入號放在
var
關鍵字上。 - 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [使用明確型別取代
var
]。
使用隱含型別
用途: 使用此重構功能,以 var
取代區域變數宣告中的明確型別。
原因: 為了符合您的個人編碼慣例,並減少顯示的程式碼。Var 必須在變數使用匿名型別初始化,且稍後會存取物件的屬性時使用。如需詳細資訊,請參閱隱含型別區域變數 (C#)。
操作方式
- 將插入號放在明確型別關鍵字上。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [使用隱含型別]。
使用 Lambda 運算式或區塊主體
用途: 讓您重構 Lambda 運算式,以使用運算式主體或區塊主體。
時機: 您偏好 Lambda 運算式使用運算式主體或區塊主體。
原因: 可以重構 Lambda 運算式,以根據您的使用者偏好改善可讀性。
操作方式
- 將游標放在 Lambda 運算子的右側。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取下列其中一個
選取 [為 Lambda 運算式使用區塊主體]。
選取 [為 Lambda 運算式使用運算式主體]。
使用遞迴模式
用途: 將程式碼區塊轉換為使用遞迴模式。此重構功能適用於 switch 陳述式、屬性模式比對、元組模式比對和位置模式比對。
時機: 使用遞迴模式可以讓您的程式碼更具可讀性/更簡潔。
操作方式
- 將游標放在您想要轉換為遞迴模式的運算式上。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取下列其中一個
選取 [將 switch
陳述式轉換為運算式]。
選取 [使用遞迴模式]。
包裝、縮排和對齊重構
包裝和對齊呼叫鏈
用途: 讓您包裝和對齊方法呼叫鏈。
時機: 您有一個由一個陳述式中的多個方法呼叫組成的長鏈。
原因: 當長列表根據使用者偏好包裝或縮排時,會更容易閱讀。
操作方式
- 將游標放在任何呼叫鏈中。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [包裝呼叫鏈] 或 [包裝並對齊呼叫鏈] 以接受重構。
包裝、縮排和對齊參數或引數
用途: 讓您包裝、縮排和對齊參數或引數。
時機: 您有一個方法宣告或呼叫,其中包含多個參數或引數。
原因: 當參數或引數的長列表根據使用者偏好包裝或縮排時,會更容易閱讀。
操作方式
- 將游標放在參數清單中。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 從下列選項中選取
選取 [包裝每個參數 -> 對齊包裝的參數]。
選取 [包裝每個參數 -> 縮排所有參數]。
選取 [包裝每個參數 -> 縮排包裝的參數]。
包裝二元運算式
用途: 讓您包裝二元運算式。
時機: 您有一個二元運算式。
原因: 當二元運算式根據使用者偏好包裝時,會更容易閱讀。
操作方式
- 將游標放在二元運算式中。
- 按下 ⌘. (Windows、Linux Ctrl+.) 以觸發 [快速動作與重構] 功能表。
- 選取 [包裝運算式] 以接受重構。