2011-05-04 15 views
6

के बजाय खोज (0 एल, SeekOrigin.Begin) का उपयोग क्यों करें, क्या कोई मुझे अंतर, यदि कोई हो, तो कृपया मुझे बता सकता है?धाराएं स्थान = 0 या इसके विपरीत

मैंने Google को आजमाने की कोशिश की लेकिन मुझे अधिक जानकारी नहीं मिली। शायद मैंने सही कीवर्ड का उपयोग नहीं किया।

किसी भी अंतर्दृष्टि की सराहना की जाएगी।

उत्तर

3

जहां तक ​​मैं कह सकता हूं, कम से कम इस विशिष्ट मामले के लिए, कुछ भी नहीं।

दोनों विधि खोज() और संपत्ति की स्थिति के लिए CanSeek को सत्य होने की आवश्यकता है ताकि मैं इसे कार्यान्वयनकर्ता तक देख सकूं।

खोज वास्तव में निर्दिष्ट स्थानों (सेकोऑरिगिन) से ऑफ़सेट में खोजने की अनुमति देने के लिए है (एमएसडीएन पर दिए गए उदाहरण कुछ हद तक शांत हैं लेकिन उद्देश्य के प्रतिनिधि हैं: http://msdn.microsoft.com/en-us/library/system.io.filestream.seek.aspx)।

स्थिति पूर्ण है और स्पष्ट रूप से खोज के लिए इसका मतलब नहीं है।

आपके द्वारा उल्लिखित मामला समकक्ष होता है।

व्यक्तिगत रूप से, मैं स्ट्रीम की शुरुआत में स्थानांतरित करने के लिए .Position = 0 का उपयोग करता हूं, क्योंकि यह फ़ाइल की शुरुआत के रूप में फ़ाइल की शुरुआत का उपयोग करने और बाइट्स के 0 ऑफसेट को स्थानांतरित करने के लिए मुझे क्लीनर पढ़ता है। "

3

आपके उदाहरण में कोई फर्क नहीं पड़ता।

Stream.Position और Stream.Seek के बीच वास्तविक अंतर Position का उपयोग करता है एक निरपेक्ष ऑफसेट Seek का उपयोग करता है, जबकि एक मूल दूसरा तर्क द्वारा निर्दिष्ट के सापेक्ष ऑफसेट है।

13

stream.Seek(x, SeekOrigin.Begin); और stream.Position = x; दोनों परिणामस्वरूप परिणाम स्थिति x पर सेट हो गई। अंतर यह है कि Position सेटर बिना शर्त पढ़ने वाले बफर को छोड़ देता है, जबकि Seek विधि बफर के उस हिस्से को बनाए रखने का प्रयास करती है जो अभी भी नई स्थिति के लिए प्रासंगिक है।

आपको परीक्षण करना होगा, आपके परिदृश्य के लिए कौन सा तेज़ है, लेकिन निश्चित रूप से एक प्रदर्शन अंतर है और न ही सभी मामलों में तेज़ है। मुझे सच में आश्चर्य है कि यह अंतर क्यों दस्तावेज नहीं है।

+1

धन्यवाद, यह एक महत्वपूर्ण महत्वपूर्ण अंतर था जिसे मुझे पता नहीं था। मुझे पीछे की ओर एक बग ठीक करने में मदद मिली है जो गलत डेटा प्राप्त करता है। इसके बजाय स्थिति में बदल दिया गया और डेटा के माध्यम से पढ़ा गया था। – tcarvin

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