constসংকলন-সময় ধ্রুবক জন্য। আপনি কেবল এটি তৈরি করতে পারেন static readonly, তবে এটি কেবলমাত্র METRICSভেরিয়েবলের ক্ষেত্রেই প্রযোজ্য (যার পরিবর্তে সাধারণত নেট নামকরণ কনভেনশনগুলি পরিবর্তে মেট্রিক হওয়া উচিত )। এটি তালিকাটি অপরিবর্তনীয় করে তুলবে না - যাতে কেউ কল করতে পারেMETRICS.Add("shouldn't be here");
আপনি ReadOnlyCollection<T>এটি মোড়ানোর জন্য একটি ব্যবহার করতে চাইতে পারেন । উদাহরণ স্বরূপ:
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>কেবলমাত্র একটি সম্ভাব্য-পরিবর্তনীয় সংগ্রহ গুটিয়ে রাখে, তবে List<T>পরবর্তীকালে আর কোনও কিছুই অ্যাক্সেস পাবে না , আপনি সামগ্রিক সংগ্রহটিকে অপরিবর্তনীয় হিসাবে বিবেচনা করতে পারেন।
(এখানে মূলধনটি বেশিরভাগ অনুমানের কাজ - পূর্ণ নাম ব্যবহার করা তাদের পরিষ্কার করে তোলে, আইএমও।)
কিনা আপনি যেমন ডিক্লেয়ার IList<string>, IEnumerable<string>, ReadOnlyCollection<string>নাকি অন্য কিছু আপ আপনাকে যদি আপনি আশা করি এটি শুধুমাত্র একটি ক্রম হিসাবে গণ্য করা উচিত, তারপর ... IEnumerable<string>সম্ভবত সবচেয়ে উপযুক্ত হবে। যদি অর্ডারটি গুরুত্বপূর্ণ হয়ে থাকে এবং আপনি চান যে লোকেরা সূচক দ্বারা এটি অ্যাক্সেস করতে সক্ষম হয় IList<T>তবে উপযুক্ত হতে পারে। আপনি যদি অপরিবর্তনশীলতাটিকে দৃশ্যমান করতে চান, এটি ReadOnlyCollection<T>সহজেই কার্যকর হিসাবে ঘোষণা করে - তবে জটিল নয়।