語言
Visual Studio 提供多種重構功能,用於重新命名和重組程式碼符號與檔案。 你可以透過 快速動作與重構 選單(按 Ctrl+.)存取這些重構。
重新命名代碼符號
適用於: C#,Visual Basic
此重構能安全地重新命名程式碼符號的識別碼,如欄位、本地變數、方法、命名空間、屬性與型別。 專案中所有參考資料都會自動更新,避免手動查找與替換的錯誤。
反白顯示或將文字游標放在要重新命名的項目內:
C#程式語言:
Visual Basic:
接下來,使用鍵盤或滑鼠,如下所示:
-
鍵盤
- 按 Ctrl+R,然後按 Ctrl+R。 (您的鍵盤快捷方式可能會根據您選取的配置檔而有所不同。
-
滑鼠
- 選取 [編輯 > 重構 > 重新命名]。
- 以滑鼠右鍵按下程式代碼,然後選取 [重新命名]。
-
鍵盤
只要輸入新名稱,即可重新命名專案。
C#程式語言:
Visual Basic:
小提示
您也可以更新批註和其他字串以使用此新名稱,以及在儲存之前 預覽變更 ,並使用開啟下拉功能表時出現的 [ 重新命名 ] 方塊中的複選框。
當您滿意變更時,請選擇 [ 套用 ] 按鈕或按 Enter 鍵,並認可變更。
備註
從 Visual Studio 2019 16.3 版本開始,當你重新命名與該檔案名稱相符的類型時,會出現一個核取方塊,讓你同時重新命名該檔案。 當您重新命名類別、介面或列舉時,就會顯示此選項。 具有多個定義的部分類型不支援此選項。
如果您使用已經存在的名稱會造成衝突,[ 重新命名 ] 方塊會警告您。
重新命名符號的另一種方式是在編輯器中變更其名稱。 然後,使用符號名稱中的游標,按 Ctrl+鍵,或只展開出現的燈泡圖示功能表,然後選擇 [將舊名稱<重新命名>為<新名稱>]。
將類型移至相符的檔案
適用於: C#,Visual Basic
這種重構會將一個型別移到同名的獨立檔案,當一個檔案中有多個型別時,能改善程式碼的組織與導航。
將游標置於定義的類型名稱內。 例如:
接著,請做以下其中一項:
- 按 Ctrl+。
- 右鍵點擊類型名稱,選擇 快速動作與重構
從選單中選擇 Move type to TypeName.cs 其中 TypeName 是你已選擇的類型名稱。
該型別會被移到專案中一個與該型別名稱相同的新檔案。
C#程式語言:
Visual Basic:
同步類型與檔名
適用於: C#,Visual Basic
這種重構會將一個類型重新命名以符合檔名,或將檔名重新命名為與其所包含的類型相符,保持程式碼有條理且易於導航。
備註
此重構尚未支援 .NET 標準與 .NET 核心專案。
將文字游標高亮或置於類型名稱內以同步:
C#程式語言:
Visual Basic:
接著,請做以下其中一項:
-
鍵盤
- 按 Ctrl+觸發快速動作與重構選單,並從預覽視窗跳出視窗中選擇「重命名檔案」為 TypeName.cs其中 TypeName 是你已選擇的類型名稱。
- 按 Ctrl+鍵觸發快速動作與重構選單,並從預覽視窗跳出視窗選擇「重新命名」類型為「檔案名稱」,其中 Filename 是目前檔案的名稱。
-
滑鼠
- 右鍵點擊程式碼,選擇 快速動作與重構 選單,然後在預覽視窗跳出視窗中選擇 「重命名檔案」為 「TypeName.cs 」,其中 TypeName 是你所選擇的類型名稱。
- 右鍵點擊程式碼,選擇 快速動作與重構 選單,然後從預覽視窗跳出視窗選擇 「重命名類型為 檔案名稱 」,其中 檔案名稱 為目前檔案名稱。
檔案的類型或檔案會被重新命名。
C#:在下面的範例中,檔案 MyClass.cs 被重新命名為 MyNewClass.cs ,以符合類型名稱。
Visual Basic:在下面的範例中,檔案 Employee.vb 被重新命名為 Person.vb以符合類型名稱。
-
鍵盤
同步命名空間和資料夾名稱
適用於: C#
這個重構會在你將檔案移到新資料夾時,更新命名空間以符合資料夾結構。
將游標放在命名空間名稱中。
按下 Ctrl+.,以觸發 [快速動作與重構] 功能表。
選擇 「更改命名空間」到 <資料夾名稱>。
在參考附近移動宣告
適用於: C#,Visual Basic
這種重構讓變數宣告更接近其使用範圍,提升可讀性並縮小變數範圍。
將游標放在變數宣告中。
接著,請做以下其中一項:
-
鍵盤
- 按 Ctrl+觸發快速動作與重構選單,並從預覽視窗彈出視窗選擇「Move 宣告 near reference」。
-
滑鼠
- 右鍵點擊程式碼,選擇 快速動作與重構 選單,然後從預覽視窗彈出視窗中選擇「 移動宣告附近 參考」。
-
鍵盤
當你對變更滿意後,按下 Enter 鍵或在選單中點擊修正,變更就會提交。
範例:
// Before
int x;
if (condition)
{
x = 1;
Console.WriteLine(x);
}
// Move declaration near reference
// After
if (condition)
{
int x = 1;
Console.WriteLine(x);
}