constderleme zamanı sabitleri içindir. Sen olabilir sadece bunu yapmak static readonly, ama bu sadece için de geçerli olacak METRICS(tarafından, tipik yerine Metrik olmalıdır değişken kendisi .NET adlandırma kurallarına ). Listeyi değiştirilemez yapmaz - böylece birisi arayabilirMETRICS.Add("shouldn't be here");
Sarmak için bir kullanmak isteyebilirsiniz ReadOnlyCollection<T>. Örneğin:
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>sadece potansiyel olarak değiştirilebilir bir koleksiyonu sarar, ancak List<T>daha sonra başka hiçbir şey erişemeyeceğinden , genel koleksiyonun değişmez olduğunu düşünebilirsiniz.
(Buradaki büyük harf kullanımı çoğunlukla varsayımdır - daha tam adlar kullanmak onları daha açık hale getirir, IMO.)
Eğer olarak ilan İster IList<string>, IEnumerable<string>, ReadOnlyCollection<string>daha sonra, sadece bir dizi olarak ele alınması gerektiğini bekliyorsanız veya başka bir şey ... size kalmış IEnumerable<string>muhtemelen en uygun olacaktır. Sipariş önemliyse ve insanların dizine göre erişebilmelerini istiyorsanız, IList<T>uygun olabilir. Değişmezliği görünür kılmak istiyorsanız, ReadOnlyCollection<T>kullanışlı olabileceğini ama esnek olmadığını beyan edin .