আমি সম্প্রতি Collection was modifiedসি # তে এই সাধারণ অবৈধ অপারেশনটিতে অংশ নিয়েছি এবং আমি এটি পুরোপুরি বুঝতে পারার পরেও মনে হচ্ছে এটি একটি সাধারণ সমস্যা (গুগল, প্রায় 300k ফলাফল!)। তবে এটি কোনও লিস্টের মধ্য দিয়ে যাওয়ার সময় পরিবর্তন করার জন্য এটি একটি যৌক্তিক এবং সোজাসাপ্টা জিনিস বলে মনে হয়।
List<Book> myBooks = new List<Book>();
public void RemoveAllBooks(){
foreach(Book book in myBooks){
RemoveBook(book);
}
}
RemoveBook(Book book){
if(myBooks.Contains(book)){
myBooks.Remove(book);
if(OnBookEvent != null)
OnBookEvent(this, new EventArgs("Removed"));
}
}
কিছু লোক পুনরাবৃত্তি করতে অন্য তালিকা তৈরি করবে, তবে এটি কেবল সমস্যাটি ডডিং করছে। আসল সমাধানটি কী, বা এখানে আসল নকশার সমস্যাটি কী? আমরা সকলেই এটি করতে চাইছি বলে মনে হচ্ছে , তবে এটি কি কোনও ডিজাইনের ত্রুটির পরিচায়ক?
You consume an iterator from client code by using a For Each…Next (Visual Basic) or foreach (C#) statementলাইনটি মিস করবেন না
Iterator(আপনি বর্ণিত হিসাবে কাজ করে) এবং ListIterator(আপনার ইচ্ছা মত কাজ করে) আছে। এটি উল্লেখ করবে যে বিভিন্ন ধরণের সংগ্রহ এবং প্রয়োগের ক্ষেত্রে পুনরাবৃত্তির কার্যকারিতা সরবরাহ করার জন্য, Iteratorঅত্যন্ত সীমাবদ্ধ (যদি আপনি একটি ভারসাম্য গাছের মধ্যে একটি নোড মুছে ফেলেন তবে কি ঘটে? next()) ListIteratorকম থাকার কারণে আরও শক্তিশালী হওয়ার সাথে? ব্যবহারের ক্ষেত্রে.