में कास्ट() और Oftype() का उपयोग करने के मैं Linq में एक Arraylist
से IEnumerable
के प्रकार के कास्टिंग और जो मामलों में उन्हें इस्तेमाल करने की सोच के दो तरीके के बारे में पता कर रहा हूँ?जब Linq
, उदा,
IEnumerable<string> someCollection = arrayList.OfType<string>()
या
IEnumerable<string> someCollection = arrayList.Cast<string>()
इन दोनों तरीकों और जहां मैं प्रत्येक मामले में आवेदन करना चाहिए के बीच क्या अंतर है?
इसके लिए चीयर्स।दोनों पहले से कोशिश की लेकिन दोनों के पास सभी प्रकार के तत्व अपेक्षित थे इसलिए मुझे अंतर क्यों नहीं दिखाई दे रहा था। –
@SLaks सही ढंग से बताते हैं कि आपको 'Cast' का उपयोग करना चाहिए जब आप यह सुनिश्चित करने के लिए जानते हैं कि संग्रह में केवल 'T' तत्व हैं। 'टाइप प्रकार '''' प्रकार की जांच के कारण धीमा है। यदि संग्रह 'IENumerable ' प्रकार का है, तो '' कास्ट करें, पूरे संग्रह को 'IENumerable ' के रूप में आसानी से डालेगा और इसे समझाए जाने से बचें; 'ऑफ टाइप ' अभी भी गणना करेगा। रेफरी: http://stackoverflow.com/questions/11430570/why-is-oftype-faster-than-cast –
hIpPy
यहां तक कि ऐसे मामलों में जहां '.Cast() जब यह प्रगणित है', फेंक नहीं है यह ** ** 'ओएफटी टाइप ()' के बराबर नहीं है। कारण यह है कि ** 'शून्य 'मान ** हमेशा' ओएफटी टाइप ()' द्वारा छोड़े जाते हैं। एक उदाहरण: 'नई प्रणाली। चयन .अरेलेलिस्ट {"एबीसी", "डीफ़", शून्य, "घी",}। ओएफटी टाइप ()। गणना() 'केवल' 3' देगी; 'Cast () 'के साथ समान अभिव्यक्ति' 4' का मूल्यांकन करती है। –