constes para constantes en tiempo de compilación. Usted podría simplemente hacer que sea static readonly, pero que sólo se aplicaría a la METRICSpropia variable (que por lo general debe ser Métrica lugar, por .NET convenciones de nombres ). No haría que la lista fuera inmutable, por lo que alguien podría llamarMETRICS.Add("shouldn't be here");
Es posible que desee utilizar un ReadOnlyCollection<T>para envolverlo. Por ejemplo:
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>simplemente envuelve una colección potencialmente mutable, pero como nada más tendrá acceso a la List<T>posterior, puede considerar la colección general como inmutable.
(Las mayúsculas aquí son principalmente conjeturas: usar nombres más completos los aclararía, en mi opinión).
Si se declara como IList<string>, IEnumerable<string>, ReadOnlyCollection<string>o alguna otra cosa depende de usted ... si esperas que sólo debe ser tratada como una secuencia, entonces IEnumerable<string>probablemente sería más apropiado. Si el orden es importante y desea que las personas puedan acceder a él por índice, IList<T>puede ser apropiado. Si desea que la inmutabilidad sea aparente, declare que ReadOnlyCollection<T>podría ser útil, pero inflexible.