Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C#

त्रुटि संग्रह को क्यों संशोधित किया गया; एन्यूमरेशन ऑपरेशन निष्पादित नहीं हो सकता है और इसे C# में कैसे हैंडल किया जाए?

यह त्रुटि तब होती है जब संग्रह पर लूपिंग प्रक्रिया चल रही होती है (उदा:सूची) और संग्रह को रनटाइम के दौरान संशोधित किया जाता है (डेटा जोड़ा या हटाया जाता है)।

उदाहरण

using System;
using System.Collections.Generic;
namespace DemoApplication {
   public class Program {
      static void Main(string[] args) {
         try {
            var studentsList = new List<Student> {
               new Student {
                  Id = 1,
                  Name = "John"
               },
               new Student {
                  Id = 0,
                  Name = "Jack"
               },
               new Student {
                  Id = 2,
                  Name = "Jack"
               }
            };
            foreach (var student in studentsList) {
               if (student.Id <= 0) {
                  studentsList.Remove(student);
               }
               else {
                  Console.WriteLine($"Id: {student.Id}, Name: {student.Name}");
               }
            }
         }
         catch(Exception ex) {
            Console.WriteLine($"Exception: {ex.Message}");
            Console.ReadLine();
         }
      }
   }
   public class Student {
      public int Id { get; set; }
      public string Name { get; set; }
   }
}

आउटपुट

उपरोक्त कोड का आउटपुट है

Id: 1, Name: John
Exception: Collection was modified; enumeration operation may not execute.

उपरोक्त उदाहरण में, छात्रों की सूची पर फ़ोरैच लूप निष्पादित किया गया है। जब छात्र की आईडी 0 होती है, तो छात्र सूची से आइटम हटा दिया जाएगा। इस परिवर्तन के कारण छात्र सूची संशोधित (आकार बदली) हो जाती है और रनटाइम के दौरान एक अपवाद फेंका जा रहा है।

उपरोक्त समस्या को ठीक करें

उपरोक्त समस्या को दूर करने के लिए, प्रत्येक पुनरावृत्ति की शुरुआत से पहले छात्रों की सूची पर एक ToList () ऑपरेशन करें।

foreach (var student in studentsList.ToList())

उदाहरण

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
namespace DemoApplication {
   public class Program {
      static void Main(string[] args) {
         var studentsList = new List<Student> {
            new Student {
               Id = 1,
               Name = "John"
            },
            new Student {
               Id = 0,
               Name = "Jack"
            },
            new Student {
               Id = 2,
               Name = "Jack"
            }
         };
         foreach (var student in studentsList.ToList()) {
            if (student.Id <= 0) {
               studentsList.Remove(student);
            }
            else {
               Console.WriteLine($"Id: {student.Id}, Name: {student.Name}");
            }
         }
         Console.ReadLine();
      }
   }
   public class Student {
      public int Id { get; set; }
      public string Name { get; set; }
   }
}

उपरोक्त कोड का आउटपुट है

आउटपुट

Id: 1, Name: John
Id: 2, Name: Jack

  1. कैसे हल करें "Mscoree.dll नहीं मिला" त्रुटि

    Mscoree.dll नहीं मिला त्रुटि एक अत्यंत कष्टप्रद और सामान्य समस्या है जो विंडोज के सभी संस्करणों को प्रभावित करती है। सौभाग्य से, यदि आप इन निर्देशों का पालन करते हैं, तो इसे ठीक करना एक बहुत ही आसान समस्या है: Mscoree.dll क्या है? Mscoree.dll एक डायनामिक लिंक लाइब्रेरी है (.dll) फ़ाइल जो विंडोज़

  1. 0x0000007F त्रुटि को कैसे ठीक करें और कैसे रोकें

    0x0000007F त्रुटि 0x0000007F त्रुटि ब्लू स्क्रीन त्रुटियों का एक सदस्य है - जिससे आपका कंप्यूटर पुनरारंभ हो जाता है और जब भी आप कुछ चीजें करने की कोशिश करते हैं और एक नीली स्क्रीन दिखाते हैं। यह त्रुटि मुख्य रूप से विंडोज के कर्नेल के साथ एक समस्या के कारण होती है और इसे रजिस्ट्री और आपके सिस्टम के

  1. Windows 10 पर "नेटवर्क पाथ नहीं मिला" त्रुटि को कैसे ठीक करें

    माइक्रोसॉफ्ट एक ही नेटवर्क पर कंप्यूटरों को दूरस्थ रूप से फ़ाइलों तक पहुँचने और विनिमय करने की अनुमति देता है। दो या दो से अधिक उपकरणों का एक साथ उपयोग करने पर यह डेटा और संसाधन-साझाकरण प्रक्रिया फायदेमंद हो सकती है। उपभोक्ताओं को कई बार दिक्कत होती है। नेटवर्क पथ का नाम नहीं मिला त्रुटि सामान्य है