c# - How to pass a byte array readonly? -


निम्न कोड के बारे में सोचें:

  स्थिर int main () {बाइट [] डेटा = फ़ाइल। पढ़ें AllBytes ("anyfile"); SomeMethod (डेटा); ...} स्थैतिक शून्य कुछ विधि (बाइट [] डेटा) {डेटा [0] = किसी भी प्रकार से; // यह लाइन संभव नहीं होनी चाहिए !!! बाइट बी = डेटा [0]; // केवल पढ़ने की अनुमति दी जानी चाहिए ...}  

क्या सी # में केवल बाइट को पढ़ना है? प्रतिलिपि कोई समाधान नहीं है मुझे स्मृति बर्बाद करना पसंद नहीं है (क्योंकि फाइल बहुत बड़ी हो सकती है) कृपया ध्यान में रखिए!

आप इस तरह से पास कर सकते हैं:

  स्थिर इंट मुख्य () {बाइट [] डेटा = फ़ाइल। पढ़ें AllBytes ("anyfile"); कुछ तरीके (नया रीडलाइन कॉलेक्शन & लेफ्टिनेंट; बाइट & gt; (डेटा)); ...} स्थिर शून्य कुछ विधि (रीडऑन्ली कलेक्शन & लेफ्टिनेंट; बाइट & gt; डेटा) {बाइट बी = डेटा [0]; // केवल पढ़ने की अनुमति है ...}  

हालांकि, इसे पारित करना बेहतर होगा:
इस तरह, आप पूरी फ़ाइल को मेमोरी में नहीं पढ़ पाएंगे बिल्कुल।

<प्री> स्थिर इंट मुख्य () {स्ट्रीम फ़ाइल = फाइल। ओपनरेड ("किसी भी फाइल"); SomeMethod (फ़ाइल); ...} स्थिर शून्य कुछ विधि (स्ट्रीम डेटा) {बाइट बी = डाटा। रीडबाइट (); // केवल पढ़ने की अनुमति है ...}

Comments