किसी संग्रह में आइटम्स निकाल रहा है, जब InvalidOperationException

लेखक:

Alvin Bruney MVP

समुदाय समाधान सामग्री उद् घोषणा

MICROSOFT CORPORATION और/या उसके संबंधित आपूर्तिकर्ताओं SUITABILITY, विश्वसनीयता, या जानकारी और संबंधित ग्राफ़िक्स यहाँ निहित की सटीकता के बारे में कोई प्रतिनिधित्व करते हैं। ऐसी सभी जानकारी और संबंधित ग्राफ़िक्स "जैसा है" किसी भी प्रकार की वारंटी के बिना प्रदान किए जाते हैं। MICROSOFT और/या उसके संबंधित आपूर्तिकर्ताओं बशर्ते सभी वारंटी और शर्तों संबंध में यह जानकारी और संबंधित ग्राफ़िक्स सहित सभी अव्यक्त वॉरंटी, और शर्तों की बिक्री, उपयुक्तता, किसी विशेष प्रयोजन, WORKMANLIKE प्रयास, शीर्षक और गैर उल्लंघन के लिए, DISCLAIM. यदि आप विशेष रूप से कोई ईवेंट में MICROSOFT और/या इसके प्रदाताओं उत्तरदायी होगा कि सहमत किसी भी प्रत्यक्ष, अप्रत्यक्ष, PUNITIVE, आकस्मिक, विशेष, परिणामस्वरूप होने वाली क्षति या किसी भी नुकसान पहुँचाने से, किसी सीमा, उपयोग, डेटा या PROFITS, की हानि के लिए क्षति के बिना सहित के लिए से बाहर उत्पन्न होने वाले या भी में अलग का उपयोग के साथ कनेक्ट या अक्षमता यहाँ जानकारी और निहित संबंधित ग्राफ़िक्स का उपयोग करने के लिए , चाहे अनुबंध, हानि, उपेक्षा, निश्चित उत्तरदायित्व पर आधारित या MICROSOFT या इसके आपूर्तिकर्ताओं में से कोई भी नहीं है, तो भी अन्यथा, क्षतियों की संभावना की सलाह दी जाती गया है।

सारांश

आप प्राप्त निम्न त्रुटि संदेश के साथ कोई InvalidOperationException: संग्रह संशोधित किया गया था: गणन कार्रवाई शायद निष्पादित नहीं हो सकता है।

लक्षण

Iterate संग्रह और संग्रह में आइटम्स हटाएँ करते हैं, आपको कोई InvalidOperationException निम्न त्रुटि संदेश के साथ मिलता है: संग्रह संशोधित किया गया था: गणन कार्रवाई शायद निष्पादित नहीं हो सकता है।

कारण

कोड संग्रह संग्रह संशोधित नहीं कर सकते क्योंकि रन-टाइम, संग्रह के आकार के बारे में कुछ अनुमान करता है iterating.

समाधान

आप गतिशील रूप से इन्यूमरेट संग्रह रखने के लिए एक नया संग्रह बनाने से सीमा के आस-पास काम कर सकते हैं। पूर्ण कोड है।
 
सिस्टम का उपयोग करते हुए;
System.Collections.Generic का उपयोग करते हुए;
System.Text का उपयोग करते हुए;
 
ConsoleApplication नाम स्थान
{
प्रोग्राम वर्ग
    {
स्थिर void मुख्य (स्ट्रिंग [] तर्क नहीं)
        {
System.Collections.ArrayList arr = नए System.Collections.ArrayList();
            arr.Add("1");
            arr.Add("2");
            arr.Add("3");
 
/ * यह एक अपवाद throws
foreach (स्ट्रिंग s में arr)
            {
arr. Remove(s);
            }
            */
 
जहाँ यह ठीक से काम करता है के रूप में
            Console.WriteLine(arr.Count);
foreach (स्ट्रिंग s में नई System.Collections.ArrayList(arr))
            {
arr. Remove(s);
            }
            Console.WriteLine(arr.Count);
Console.ReadKey();
        }
    }
}

अधिक जानकारी

इस लिंक को आगे विस्तार सीमा पर चर्चा करता है। यह नोट करें कि कोड संग्रह iterating पर प्रतिबंध निकालें नहीं करने के लिए महत्वपूर्ण है। इसके बजाय, यह कोड बस प्रतिबंध एक कंटेनर (arr) से अन्य (arraylist नहीं करने के लिए) ले जाता है।
गुण

आलेख ID: 555972 - पिछली समीक्षा: 15/02/2017 - संशोधन: 1

Microsoft ASP.NET 2.0

प्रतिक्रिया