2011-01-06 2 views
5

में सरणी सबस्क्राइबिंग के बारे में प्रश्न सी के पुराने दिनों में, कोई भी बहुत उपयोगी तरीकों से स्टोरेज को संबोधित करने के लिए सरणी सबस्क्रिप्टिंग का उपयोग कर सकता है। उदाहरण के लिए, कोई एक सरणी घोषित कर सकता है।सी #

यह सरणी 8 बिट शब्दों के साथ एक ईईपीरोम छवि का प्रतिनिधित्व करती है।

BYTE eepromImage[1024] = { ... }; 

और बाद में उस सरणी का उल्लेख के रूप में अगर यह वास्तव में बहु-आयामी भंडारण

BYTE mpuImage[2][512] = eepromImage; 

मुझे यकीन है कि मैं वाक्य रचना गलत है हूँ, लेकिन मुझे आशा है कि आप विचार प्राप्त कर रहे थे।

वैसे भी, इसने वास्तव में एकल आयामी भंडारण की एक दो आयाम छवि का अनुमान लगाया।

दो आयामी प्रक्षेपण ईईपीरोम छवि का प्रतिनिधित्व करता है जब एमपीटी की स्मृति में 16 बिट शब्दों के साथ लोड किया जाता है।

सी में स्टोरेज बहु-आयामी का संदर्भ दे सकता है और मूल्यों को बदल सकता है और बदले गए मूल्य असली (एकल आयाम) भंडारण में लगभग जादू के रूप में दिखाई देंगे।

क्या सी # का उपयोग करके यह वही काम करना संभव है?

हमारा वर्तमान समाधान चीजों को सिंक्रनाइज़ करने के लिए एकाधिक सरणी और ईवेंट हैंडलर का उपयोग करता है। इस प्रकार के काम लेकिन यह अतिरिक्त जटिलता है कि अगर कोई बेहतर तरीका है तो हम इससे बचना चाहेंगे।

उत्तर

9

आप सरणी को कक्षा में लपेट सकते हैं और 1-आयामी और 2-आयामी सूचकांक गुण लिख सकते हैं।

सत्यापन आदि के बिना यह एक 10x10 सरणी के लिए इस तरह दिखता है:

class ArrayData 
    { 
     byte[] _data = new byte[100]; 

     public byte this[int x]   
     { 
      get { return _data[x]; } 
      set { _data[x] = value; }    
     } 


     public byte this[int x, int y] 
     { 
      get { return _data[x*10+ y]; } 
      set { _data[x*10 + y] = value; } 
     } 
    } 
+0

क्या आप 2 पैरामीटर संस्करण में अपने गणित के बारे में निश्चित हैं? यह '_data [x * y]' नहीं होना चाहिए? – jjnguy

+0

नहीं, वह 10 से 10 ग्रिड मान रहा है। यह x * width + y – Ian

+0

@jjnguy जैसे कुछ होना चाहिए: नहीं, 'x * 10 + y' 10x10 सरणी के लिए सही है, लेकिन मैंने स्पष्ट रूप से यह नहीं बताया। संपादित। –

1

हाँ, पर कोई।

यदि आप चाहें तो बल्ले से आप एक बहुआयामी सरणी आवंटित कर सकते हैं। आप एक कस्टम क्लास भी बना सकते हैं जो अंतर्निहित डेटा को सिंक में रखते हुए, एक अंतर्निहित डेटा या बहु-आयामी तरीके से अपने अंतर्निहित डेटा तक पहुंचने की अनुमति देता है।

हालांकि, आप एक बहु-आयामी सूचकांक के साथ सीधे एक एकल-आयामी सरणी तक नहीं पहुंच सकते हैं।