CA1051:不要宣告可見的執行個體欄位
型別名稱 |
DoNotDeclareVisibleInstanceFields |
CheckId |
CA1051 |
分類 |
Microsoft.Design |
中斷變更 |
中斷 |
原因
外部可見的型別具有外部可見的執行個體 (Instance) 欄位。
規則描述
欄位的主要用法應該是當做實作詳細資料。欄位應該是 private 或 internal,而且應使用屬性公開 (Expose)。存取屬性與存取欄位一樣容易,而且屬性存取子 (Accessor) 中的程式碼可隨著型別的功能展開而變更,而不須採用中斷變更。剛傳回私用或內部欄位值的屬性已進行最佳化,以便與存取欄位一樣地執行。使用外部可見的欄位,對於屬性的效能提升毫無關聯。
外部可見是指 public、protected 和 protected internal (在 Visual Basic 中為 Public、Protected 和 Protected Friend) 存取範圍層級。
如何修正違規
若要修正此規則的違規情形,請使欄位成為 private 或 internal,並且使用外部可見的屬性予以公開。
隱藏警告的時機
請勿隱藏此規則的警告。外部可見的欄位所提供的優點都可以供屬性使用。此外,連結要求不會保護公用欄位。請參閱 CA2112:受保護型別不應公開欄位。
範例
下列範例會示範違反此規則的型別 (BadPublicInstanceFields)。GoodPublicInstanceFields 會顯示修正過的程式碼。
using System;
namespace DesignLibrary
{
public class BadPublicInstanceFields
{
// Violates rule DoNotDeclareVisibleInstanceFields.
public int instanceData = 32;
}
public class GoodPublicInstanceFields
{
private int instanceData = 32;
public int InstanceData
{
get { return instanceData; }
set { instanceData = value ; }
}
}
}