কম্পিউটার টিউটোরিয়াল

C#-তে ArrayList-র জন্য শুধুমাত্র পঠনযোগ্য (Read-Only) র‍্যাপার তৈরি করা

ArrayList ক্লাসের স্ট্যাটিক ReadOnly(IList list) মেথড ব্যবহার করে একটি শুধুমাত্র পঠনযোগ্য (read-only) র‍্যাপার তৈরি করা যায়। এই র‍্যাপারের মাধ্যমে মূল ArrayList-কে মডিফাই করা যায় না (Add, Remove, Clear, Insert, সেটার ব্লকড)।

উদাহরণ ১: সাধারণ ArrayList (রিড-অনলি নয়)

using System;
using System.Collections;

public class Demo {
    public static void Main() {
        ArrayList list = new ArrayList();
        list.Add("One");
        list.Add("Two");
        list.Add("Three");
        list.Add("Four");
        list.Add("Five");
        list.Add("Six");
        list.Add("Seven");
        list.Add("Eight");

        Console.WriteLine("ArrayList উপাদানসমূহ...");
        foreach (string str in list) {
            Console.WriteLine(str);
        }

        Console.WriteLine("ArrayList রিড-অনলি কিনা? = " + list.IsReadOnly);  // False
    }
}

আউটপুট

ArrayList উপাদানসমূহ...
One
Two
Three
Four
Five
Six
Seven
Eight
ArrayList রিড-অনলি কিনা? = False

উদাহরণ ২: ReadOnly র‍্যাপার তৈরি করা

using System;
using System.Collections;

public class Demo {
    public static void Main() {
        ArrayList list = new ArrayList();
        list.Add("One");
        list.Add("Two");
        list.Add("Three");
        list.Add("Four");
        list.Add("Five");
        list.Add("Six");
        list.Add("Seven");
        list.Add("Eight");

        Console.WriteLine("ArrayList উপাদানসমূহ...");
        foreach (string str in list) {
            Console.WriteLine(str);
        }

        Console.WriteLine("ArrayList রিড-অনলি কিনা? = " + list.IsReadOnly);  // False

        // Read-only র‍্যাপার তৈরি
        ArrayList list2 = ArrayList.ReadOnly(list);

        Console.WriteLine("ArrayList এখন রিড-অনলি কিনা? = " + list2.IsReadOnly);  // True

        // নিচের লাইনগুলো রানটাইমে NotSupportedException নিক্ষেপ করবে:
        // list2.Add("Nine");
        // list2.Remove("One");
        // list2.Clear();
        // list2[0] = "Zero";
    }
}

আউটপুট

ArrayList উপাদানসমূহ...
One
Two
Three
Four
Five
Six
Seven
Eight
ArrayList রিড-অনলি কিনা? = False
ArrayList এখন রিড-অনলি কিনা? = True

ArrayList.ReadOnly() - গুরুত্বপূর্ণ বৈশিষ্ট্য

  • রিটার্ন টাইপ: ArrayList (সেইম টাইপ, কিন্তু IsReadOnly = true)
  • র‍্যাপার প্যাটার্ন: মূল ArrayList-কে র‍্যাপ করে, কপি তৈরি করে না।
  • লাইভ ভিউ: মূল ArrayList পরিবর্তন হলে র‍্যাপারে প্রতিফলিত হয়।
  • মডিফিকেশন ব্লকড: Add, Remove, Clear, Insert, RemoveAt, RemoveRange, সেটার (indexer) কল করলে NotSupportedException নিক্ষেপ করে।
  • পঠন অনুমত: Get, IndexOf, Contains, CopyTo, Count, foreach, GetEnumerator() কাজ করে।

রিড-অনলি কালেকশন তৈরির অন্যান্য পদ্ধতি (আধুনিক)

// ১. List + ReadOnlyCollection (সুপারিশকৃত, টাইপ-সেফ)
using System.Collections.Generic;
using System.Collections.ObjectModel;

var list = new List<string> { "One", "Two", "Three" };
var readOnlyList = new ReadOnlyCollection<string>(list);
// অথবা .NET 8+:
var readOnlyList2 = list.AsReadOnly();  // extension method

// ২. IReadOnlyList ইন্টারফেস (প্যারামিটার টাইপ হিসেবে)
void PrintList(IReadOnlyList<string> list) { ... }

// ৩. ImmutableList (System.Collections.Immutable NuGet)
using System.Collections.Immutable;
var immutableList = list.ToImmutableList();  // সম্পূর্ণ ইমিউটেবল, কপি তৈরি হয়

// ৪. Array.AsReadOnly() (T[] অ্যারের জন্য)
string[] arr = { "One", "Two", "Three" };
var readOnlyArr = Array.AsReadOnly(arr);  // ReadOnlyCollection<string>

তুলনা: ArrayList.ReadOnly vs আধুনিক বিকল্প

বৈশিষ্ট্যArrayList.ReadOnly()ReadOnlyCollection<T>ImmutableList<T>
টাইপ সেফটিনন-জেনেরিক (object)জেনেরিকজেনেরিক
মুল কালেকশন পরিবর্তনর‍্যাপারে প্রতিফলিত হয়র‍্যাপারে প্রতিফলিত হয়না (স্ন্যাপশট)
পারফরম্যান্সওভারহেড নেইওভারহেড নেইকপি ওভারহেড
থ্রেড-সেফনানা (মুল লিস্ট থ্রেড-সেফ নয়)হ্যাঁ (ইমিউটেবল)

সুপারিশ: নতুন কোডে ArrayList এর পরিবর্তে List<T> + ReadOnlyCollection<T> বা ImmutableList<T> ব্যবহার করুন। ArrayList লিগ্যাসি নন-জেনেরিক ক্লাস।

  1. কুইজ তৈরি করার জন্য ৫টি সেরা Android অ্যাপ

  2. পারফেক্ট প্রফেশনাল ইমেইল সিগনেচার তৈরির ৭ টিপস

  3. পাইপ্লটে ফিগারের আক্ষের লিস্ট পাওয়া

  4. এন্ড্রয়েডের জন্য ৪টি সেরা গ্রোসারি শপিং লিস্ট অ্যাপ