बीच क्या अंतर है AddRange और Concat एक सामान्य सूची कार्यों? क्या एक दूसरे पर सिफारिश की जाती है?
जवाबों:
उनके पास बिल्कुल अलग शब्दार्थ है।
AddRange इसमें अन्य आइटम जोड़कर सूची को संशोधित करता है।
कॉनैट सूची को संशोधित किए बिना सूची और अन्य मदों से युक्त एक नया अनुक्रम लौटाता है।
जो भी आप चाहते हैं शब्दार्थ चुनें।
बड़ा अंतर यह है कि AddRange उस सूची को उत्परिवर्तित करता है, जिसके खिलाफ इसे कहा जाता है जबकि कॉनसैट एक नई सूची बनाता है। इसलिए उनके अलग-अलग उपयोग हैं।
कॉनकैट भी एक विस्तार विधि है जो किसी भी IEnumerable पर लागू होती है और एक IEnumerable देता है। आपको एक नई सूची में परिणाम के लिए .ToList () की आवश्यकता होती है।
यदि आप मौजूदा सूची की सामग्री का विस्तार करना चाहते हैं तो AddRange का उपयोग करें।
यदि आप दो IEnumerable स्रोतों से एक नई सूची बना रहे हैं, तो .TList के साथ Concat का उपयोग करें। इसका यह गुण है कि यह किसी भी स्रोत को परिवर्तित नहीं करता है।
यदि आपको कभी भी दो सूचियों (या किसी अन्य IEnumerable) की सामग्री की गणना करने की आवश्यकता होती है, तो बस हर बार कॉनसैट का उपयोग करें, इसका लाभ यह है कि वास्तव में एकीकृत सूची रखने के लिए नई मेमोरी को आवंटित नहीं करना है।
मुझे यह दिलचस्प लेख इन 2 संरचनाओं के बीच अंतर और उनके प्रदर्शन की तुलना के बारे में बात करते हुए मिला ...
मुख्य विचार यह है कि AddRange बहुत तेज़ है जब इसके बड़े आकार के संग्रह के बारे में।
यहाँ लिंक है
उम्मीद है की यह मदद करेगा,
Concat
और AddRange
एक साथ List<KeyValuePair<string, string>>
1000 तत्वों, concatenated / जोड़ा 100 बार, और साथ AddRange
अत्यंत तेजी से किया गया था। परिणाम ये थे: AddRange
13 एमएस, Concat().ToList()
16,000 एमएस, और अंत में केवल Concat
एक IEnumerable
कर ToList
पर: 2,700 एमएस।