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