constadalah untuk konstanta waktu kompilasi. Anda bisa membuatnya static readonly, tetapi itu hanya akan berlaku untuk METRICSvariabel itu sendiri (yang biasanya harus Metrik, dengan konvensi penamaan .NET ). Itu tidak akan berhasil daftar itu tidak berubah - sehingga seseorang dapat meneleponMETRICS.Add("shouldn't be here");
Anda mungkin ingin menggunakan a ReadOnlyCollection<T>untuk membungkusnya. Sebagai contoh:
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> hanya membungkus koleksi yang berpotensi berubah, tetapi karena tidak ada orang lain yang akan memiliki akses ke List<T> setelahnya, Anda dapat menganggap keseluruhan koleksi sebagai tidak dapat diubah.
(Kapitalisasi di sini sebagian besar merupakan tebakan - menggunakan nama yang lebih lengkap akan membuatnya lebih jelas, IMO.)
Apakah Anda menyatakan sebagai IList<string>, IEnumerable<string>, ReadOnlyCollection<string>atau sesuatu yang lain terserah Anda ... jika Anda berharap bahwa hal itu harus diperlakukan sebagai urutan, maka IEnumerable<string>mungkin akan paling sesuai. Jika urutan penting dan Anda ingin orang dapat mengaksesnya dengan indeks, IList<T>mungkin sesuai. Jika Anda ingin membuat keabadian itu tampak, menyatakannya sebagai ReadOnlyCollection<T>bisa berguna - tetapi tidak fleksibel.