constist für Konstanten zur Kompilierungszeit. Sie könnten es einfach machen static readonly, aber das würde nur für die METRICSVariable selbst gelten (die normalerweise gemäß .NET-Namenskonventionen Metriken sein sollte ). Es würde die Liste nicht unveränderlich machen - also könnte jemand anrufenMETRICS.Add("shouldn't be here");
Möglicherweise möchten Sie ein verwenden ReadOnlyCollection<T>, um es zu verpacken. Beispielsweise:
public static readonly IList<String> Metrics = new ReadOnlyCollection<string>
(new List<String> {
SourceFile.LoC, SourceFile.McCabe, SourceFile.NoM,
SourceFile.NoA, SourceFile.FanOut, SourceFile.FanIn,
SourceFile.Par, SourceFile.Ndc, SourceFile.Calls });
ReadOnlyCollection<T>Wraps nur eine potenziell veränderbare Sammlung, aber da nichts anderes Zugriff auf die nachfolgende Sammlung hat, List<T>können Sie die gesamte Sammlung als unveränderlich betrachten.
(Die Großschreibung hier ist meistens eine Vermutung - die Verwendung vollständigerer Namen würde sie klarer machen, IMO.)
Ob als erklären IList<string>, IEnumerable<string>, ReadOnlyCollection<string>oder etwas anderes ist an Ihnen ... wenn Sie erwarten , dass es sollte nur als eine Folge behandelt werden, dann IEnumerable<string>wäre wahrscheinlich am besten geeignet sein. Wenn die Reihenfolge wichtig ist und Sie möchten, dass Personen über den Index darauf zugreifen können, ist dies IList<T>möglicherweise angemessen. Wenn Sie die Unveränderlichkeit sichtbar machen möchten, erklären Sie sie als ReadOnlyCollection<T>praktisch - aber unflexibel.