Directory.EnumerateFiles
बनाम के बीच अंतर क्या है GetFiles
?
जाहिर है कि एक ऐरे को लौटाता है और दूसरा एनुमेरबल को।
और कुछ?
Directory.EnumerateFiles
बनाम के बीच अंतर क्या है GetFiles
?
जाहिर है कि एक ऐरे को लौटाता है और दूसरा एनुमेरबल को।
और कुछ?
जवाबों:
से डॉक्स :
EnumerateFiles और GetFiles के तरीके अलग-अलग हैं: जब आप EnumerateFiles का उपयोग करते हैं, तो आप पूरे संग्रह के वापस आने से पहले नामों के संग्रह की गणना शुरू कर सकते हैं; जब आप GetFiles का उपयोग करते हैं, तो आपको सरणी तक पहुंचने से पहले नामों के पूरे सरणी के लिए इंतजार करना होगा। इसलिए, जब आप कई फ़ाइलों और निर्देशिकाओं के साथ काम कर रहे हैं, तो EnumerateFiles अधिक कुशल हो सकते हैं।
इसलिए मूल रूप से, EnumerateFiles
वह रिटर्न, IEnumerable
जिसका कुछ हद तक आलसी मूल्यांकन किया जा सकता है, जबकि GetFiles
वह रिटर्न string[]
जो वापस लौटने से पहले पूरी तरह से आबादी होना चाहिए।
FileSystemEnumerableFactory.CreateFileInfoIterator()
। लेकिन EnumerateFiles()
इस पुनरावृत्ति को सीधे लौटाता है जबकि इससे GetFiles()
अतिरिक्त बनाता List
है और कॉल करता है ToArray()
। इसलिए, यदि आप गति का ध्यान रखते हैं, तो इसका उपयोग करने EnumerateFiles()
और अपने आप से चलने वाले से निपटने के लिए समझ में आता है ।
EnumerateFiles
रिटर्न IEnumerable<string>
और इसका मतलब है कि आस्थगित निष्पादन। यह केवल Fx4 और अप में उपलब्ध है।
EnumerateFiles का उपयोग करते समय, यदि आप उपयोग कर रहे हैं तो सभी गति खो जाती है .Last
। यह निश्चित रूप से समझ में आता है, क्योंकि अंतिम फ़ाइल को प्राप्त करने के लिए, इसे सभी फ़ाइलों को एन्यूमरेट करने की आवश्यकता होगी, फिर पिछले एक को पकड़ो।
हालांकि, इसका उपयोग करना .First
या .FirstOrDefault
बहुत तेज हो जाता है, क्योंकि यह केवल पहली वस्तु को पकड़ता है और आगे बढ़ता है।
Array
बनाम Enumerable
पहलू के अलावा क्या अंतर थे । आपका उत्तर ऐसी सभी स्थितियों के लिए सामान्य है, लेकिन पूछे गए प्रश्न का उत्तर नहीं देता है।