const
est pour les constantes de compilation. Vous pourriez simplement faire static readonly
, mais qui ne s'appliquerait qu'à l' METRICS
variable (qui devraient normalement être les actes de naissance au lieu de cela, par .NET conventions de nommage). Il ne fera pas la liste immuable - donc, quelqu'un pourrait appeler METRICS.Add("shouldn't be here");
Vous souhaiterez peut-être utiliser un ReadOnlyCollection<T>
pour l'envelopper. Par exemple:
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>
seulement enroule une potentiellement mutables collection, mais que rien d'autre n'aura accès à l' List<T>
par la suite, vous pouvez considérer l'ensemble de la collection comme immuable.
(La capitalisation est ici essentiellement la conjecture - à l'aide de fuller noms de les rendre plus clairs, de l'OMI.)
Si vous le déclarer comme IList<string>
, IEnumerable<string>
, ReadOnlyCollection<string>
ou quelque chose d'autre est à vous... si vous vous attendez à ce qu'il ne devrait être traitée comme une séquence, alors IEnumerable<string>
serait probablement plus approprié. Si l'ordre des questions et que vous voulez les gens à être en mesure d'y accéder par index, IList<T>
peut être approprié. Si vous voulez faire de l'immuabilité apparente, déclarer ReadOnlyCollection<T>
pourrait être utile, mais inflexible.