2008-09-19 22 views

उत्तर

94

उनके पास पूरी तरह से अलग अर्थशास्त्र हैं।

AddRange अन्य वस्तुओं को जोड़कर सूची को संशोधित करता है।

कंसट सूची को संशोधित किए बिना सूची और अन्य वस्तुओं वाला एक नया अनुक्रम देता है।

चुनें कि आपके पास कोई भी अर्थशास्त्र है जिसे आप चाहते हैं।

+0

तो आयन एक तंग पाश, यह अतिरिक्त सीमा का उपयोग करने के लिए बेहतर होगा ताकि सभी आंतरिक नए कारणों और जीसी को तेज़ करने के कारण प्रदर्शन खोना न पड़े? – johnc

+33

असल में, स्थगित निष्पादन के कारण, कोंकैट का उपयोग करना तेजी से तेज़ होगा क्योंकि यह * ऑब्जेक्ट आवंटन से बचाता है - कंसट कुछ भी कॉपी नहीं करता है, यह केवल सूचियों के बीच लिंक बनाता है ताकि गणना करने के दौरान और आप एक के अंत तक पहुंच सकें, यह पारदर्शी रूप से आपको ले जाता है अगले की शुरुआत के लिए! –

28

बड़ा अंतर यह है कि AddRange उस सूची को बदल देता है जिसके खिलाफ इसे कहा जाता है जबकि Concat एक नई सूची बनाता है। इसलिए उनके पास अलग-अलग उपयोग हैं।

इसके अलावा कोंकैट एक विस्तार विधि है जो किसी भी आईनेमरेबल पर लागू होती है और एक आईनेमरेबल लौटाती है जिसके लिए आपको एक नई सूची में परिणामस्वरूप टॉलीस्ट() की आवश्यकता होती है।

यदि आप मौजूदा सूची की सामग्री का विस्तार करना चाहते हैं तो AddRange का उपयोग करें।

यदि आप दो आईनेमरेबल स्रोतों से एक नई सूची बना रहे हैं तो टोस्टिस्ट के साथ Concat का उपयोग करें। इसमें गुणवत्ता है कि यह किसी भी स्रोत को म्यूट नहीं करता है।

यदि आपको केवल दो सूचियों (या किसी अन्य आईनेमरेबल) की सामग्री को गिनने की आवश्यकता है तो बस हर बार कंसट का उपयोग करें, इसका असीमित सूची को पकड़ने के लिए वास्तव में नई मेमोरी आवंटित करने का लाभ नहीं है।

+0

+1, दरअसल, अगर आप 'सूची' करना भूल जाते हैं, तो चुपचाप चुपचाप कुछ भी नहीं करता – smirkingman