共用方式為


CA1507:使用 nameof 取代字串

屬性
規則識別碼 CA1507
職稱 使用 nameof 取代字串
類別 可維護性
修正程式是中斷或非中斷 不中斷
預設在 .NET 9 中啟用 建議

原因

string常值或常數,其符合包含方法之參數的名稱,或包含型別之屬性的名稱,會當做方法的自變數使用。

檔案描述

規則 CA1507 會將常值當做方法或建構函式的 string 自變數旗標,其中 nameofNameOf 在 Visual Basic 中) 表達式會新增可維護性。 如果符合下列所有條件,規則就會引發:

  • 自變數是常 string 值或常數。

  • 自變數會對應至 string方法的 -typed 參數或正在叫用的建構函式(也就是說,呼叫月台沒有涉及轉換)。

  • 任一:

    • 參數的宣告名稱是 paramName ,而常值的常數值 string 會符合叫用方法或建構函式之方法、Lambda 或本機函式的參數名稱。

    • 參數的宣告名稱是 propertyName ,而常值的常數值 string 符合叫用方法或建構函式之型別的屬性名稱。

規則 CA1507 可改善未來可能重新命名參數的程式代碼可維護性,但 string 常值錯誤地不會重新命名。 藉由使用 nameof,當參數透過重構作業重新命名時,符號將會重新命名。 此外,編譯程式會攔截參數名稱中的任何拼字錯誤。

如何修正違規

若要修正違規,請將常值取代 stringnameofNameOf 在 Visual Basic) 表達式中。 例如,下列兩個代碼段會顯示違反規則,以及如何修正它:

public Book(string title)
{
    // Violates rule CA1507
    Title = title ?? throw new ArgumentNullException("title", "All books must have a title.");
}
public Book(string title)
{
    // Resolves rule CA1507 violation
    Title = title ?? throw new ArgumentNullException(nameof(title), "All books must have a title.");
}

提示

Visual Studio 中有一個程式代碼修正程式代碼可供此規則使用。 若要使用它,請將游標放在常值上string,然後按 Ctrl+。(句號)。 從所呈現的選項清單中,選擇 [使用 nameof] 表示符號名稱

CA1507 的程式代碼修正 - 使用 nameof 來表示符號名稱

隱藏警告的時機

如果您不擔心程式代碼的可維護性,則隱藏此規則的違規是安全的。

隱藏警告

如果您只想要隱藏單一違規,請將預處理器指示詞新增至原始程式檔以停用,然後重新啟用規則。

#pragma warning disable CA1507
// The code that's violating the rule is on this line.
#pragma warning restore CA1507

若要停用檔案、資料夾或項目的規則,請在組態檔中將其嚴重性設定為 。none

[*.{cs,vb}]
dotnet_diagnostic.CA1507.severity = none

如需詳細資訊,請參閱 如何隱藏程式代碼分析警告

另請參閱