2013-04-22 3 views
6

newPeople PeopleCollection की गहरी प्रतिलिपि प्राप्त मान लीजिए मैं एक चर List<Person> प्रकारक्या LINQ संग्रह की गहरी प्रतिलिपि देता है?

की PeopleCollection कहा जाता है नीचे बयान में होगा?

var newPeople=(from p in PeopleCollection select p).ToList(); 

क्या नए लोगों के लिए कोई हेरफेर लोगकोलेक्शन को प्रभावित कर सकता है?

+5

ध्यान दें कि चयन कुछ भी उत्पादक नहीं है, आप बस 'PeopleCollection.ToList() 'कह सकते हैं। – Servy

+1

क्यों पूछें कि आप एक-लाइनर लिख सकते हैं जो आपको बताता है कि वास्तव में क्या होता है? http://ideone.com/IJkfyG – Jon

+0

@ जोन यह सही है कि वह स्वयं की जांच कर सकता है, लेकिन यह सभी प्रश्नों के लिए लगभग सच है ... –

उत्तर

10

इससे एक नई सूची तैयार होगी और उस सूची में मौजूद सभी आइटम नई सूची में जोड़ेंगे। यह उन सभी वस्तुओं की "उथली" प्रतिलिपि करेगा, इसलिए यदि वे आइटम उत्परिवर्तनीय संदर्भ प्रकार हैं तो उन्हें संग्रहित करना किसी भी संग्रह से दिखाई देगा।

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

(तो एक शब्द में, नहीं, यह नहीं होगा।)

+0

SO अगर मैं नए लोगों में किसी ऑब्जेक्ट के गुणों को संशोधित करता हूं, जो लोगकोलेक्शन को प्रभावित कर सकता है चर? – developer747

+1

@ डेवलपर 747 अच्छा, तकनीकी रूप से नहीं, आप 'पीपुल्सकोलेक्शन' * चर * को संशोधित नहीं कर रहे हैं। चर केवल एक सूची का संदर्भ है, और यह सूची लोगों के संदर्भों का एक समूह है। बदलना इससे कोई फ़र्क नहीं पड़ता कि आप किसी व्यक्ति को ढूंढने के लिए किस सूची का उपयोग करते हैं, 'ToList' पर कॉल के परिणामस्वरूप कोई भी नया व्यक्ति नहीं बनाया गया है। – Servy

3

यह एक List संदर्भ ही वस्तुओं Enumerable द्वारा वापस लौट जाता है।

संबंधित मुद्दे