CA1051: Non dichiarare campi di istanza visibili
TypeName |
DoNotDeclareVisibleInstanceFields |
CheckId |
CA1051 |
Category |
Microsoft.Design |
Breaking Change |
Breaking |
Causa
Un tipo visibile esternamente dispone di un campo istanza visibile esternamente.
Descrizione della regola
L'utilizzo principale di un campo deve essere come dettaglio di implementazione. I campi devono essere private o internal e devono essere esposti mediante le proprietà. L'accesso a una proprietà è tanto semplice quanto l'accesso a un campo e il codice nelle funzioni di accesso di una proprietà può cambiare con l'espandersi delle funzionalità del tipo senza introdurre modifiche sostanziali. Le proprietà che restituiscono solo il valore di un campo privato o interno sono ottimizzate per l'esecuzione analoga all'accesso a un campo; l'utilizzo di campi visibili esternamente rispetto alle proprietà comporta un lieve vantaggio in termini di prestazioni.
La visibilità esterna fa riferimento ai livelli di accessibilità public, protected e protected internal (Public, Protected e Protected Friend in Visual Basic).
Come correggere le violazioni
Per correggere una violazione di questa regola, rendere il campo private o internal ed esporlo mediante una proprietà visibile esternamente.
Esclusione di avvisi
Non escludere un avviso da questa regola. I campi visibili esternamente non forniscono vantaggi non disponibili alle proprietà. Inoltre, i campi pubblici non possono essere protetti da Richieste di collegamento. Vedere CA2112: I tipi protetti non devono esporre campi.
Esempio
Nell'esempio riportato di seguito viene illustrato un tipo BadPublicInstanceFields che viola questa regola. GoodPublicInstanceFields mostra il codice corretto.
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 ; }
}
}
}
Regole correlate
CA2112: I tipi protetti non devono esporre campi