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पहलू के अलावा क्या अंतर थे । आपका उत्तर ऐसी सभी स्थितियों के लिए सामान्य है, लेकिन पूछे गए प्रश्न का उत्तर नहीं देता है।