इसमें Clear()
विधि है जो आपके द्वारा उपयोग किए जा सकने वाले सभी आइटम को हटा देती है।
अगर मैं करने के लिए के रूप में एक अनुमान खतरे को क्यों वे RemoveAll
के बजाय Clear
इस्तेमाल किया था, मुझे लगता है कि जबकि Clear
आपको बताता है कि यह होगा क्योंकि RemoveAll
सुझाव है कि आप संग्रह से आइटम निकाल रहे वहन करती है, आइटम बस को मंजूरी दे दी जा रही हैं ।
इससे CollectionChanged
अधिसूचना के प्रकार में कोई फर्क पड़ता है जो उठाया जाता है। Clear()
NotifyCollectionChangedAction.Clear
ईवेंट बढ़ाता है और इसमें ईवेंट में हटाए गए आइटम शामिल नहीं होते हैं, जबकि Remove
NotifyCollectionChangedAction.Removed
ईवेंट बढ़ाता है, और हटाए गए आइटम को ईवेंट में पास करता है।
You cannot raise a CollectionChanged
event with multiple items, इसलिए NotifyCollectionChangedAction.Removed
ईवेंट को हटाकर सभी आइटम हटा दिए गए अपवाद को फेंक दिया जाएगा। विकल्प हटाए गए प्रत्येक आइटम के लिए CollectionChanged
ईवेंट को बढ़ाने का विकल्प होगा, जो प्रदर्शन के लिए काफी खराब हो सकता है। और बस NotifyCollectionChangedAction.Reset
ईवेंट को बढ़ाने से कुछ भ्रम पैदा हो जाएंगे जब उपयोगकर्ता Removed
ईवेंट की अपेक्षा कर रहे हैं जब वे आइटम हटा रहे हों।
तो मुझे लगता है कि उन्होंने .RemoveAll()
के बजाय .Clear()
का उपयोग करने का निर्णय लिया है क्योंकि नाम दृश्यों के पीछे वास्तव में क्या हो रहा है इसका एक बेहतर वर्णन है।
क्या आपने साफ़() विधि को देखा है? (http://msdn.microsoft.com/en-us/library/ms132405.aspx) – Eirik
इसमें विधि साफ़() है, जो संग्रह से सभी तत्वों को हटा देती है। – Dante
खैर, RemoveAll() विधि संग्रह को साफ़ करने का इरादा नहीं है। यहां तक कि सूची में एक स्पष्ट() विधि है। इसका उद्देश्य उन सभी वस्तुओं को निकालना है जो एक निश्चित मानदंड से मेल खाते हैं। –