मैं वर्तमान में उपयोग की जाने वाली लाइब्रेरी को दोबारा कर रहा हूं, और मुझे निम्न समस्या का सामना करना पड़ रहा है।सी # में एक सबएरे संदर्भ बनाएं (असुरक्षित का उपयोग कर?)
हम निम्नलिखित सामान किया करते थे:
class Blah
{
float[][] data;
public float[] GetDataReference(int index)
{
return data[index];
}
}
विभिन्न कारणों से, मैं एक 1 dimensionnal सरणी संस्करण के साथ इस दांतेदार सरणी संस्करण जगह ले ली है, भीतरी सरणियों श्रृंखलाबद्ध। मेरा प्रश्न है: मैं अभी भी data
की उप सरणी के संदर्भ को कैसे वापस कर सकता हूं?
class Blah
{
float[] data;
int rows;
public float[] GetDataReference(int index)
{
// Return a reference data from offset i to offset j;
}
}
मैं सोच रहा था कि असुरक्षित और पॉइंटर्स सामान का उपयोग किया जा सकता है, क्या यह करने योग्य है?
+1 तुम सीखना कुछ नया हर रोज :-) – WestDiscGolf
सहमत, कि या तो पता नहीं था। मैं अपना जवाब रखूंगा (साथ ही साथ काम करना चाहिए), लेकिन ऐसा लगता है कि यह "सही तरीका" (टीएम) –
एक जंजीर सरणी का मेमोरी लेआउट अपनी सामग्री को प्राप्त करने के लिए असुरक्षित संरचनाओं का उपयोग करने के लिए अव्यवहारिक बनाता है। यदि एकाधिक आयामी सरणी का उपयोग किया जाता है, तो यह किया जा सकता है और (दुर्लभ) कोने मामलों में लाभार्थी हो सकता है जहां बहु मंद सरणी पर खराब .NET प्रदर्शन आपके लिए बहुत धीमा है। लेकिन आप अभी भी नए मेटाडेटा को कॉपी और जोड़ने के बिना एक टुकड़ा वापस नहीं कर सकते हैं। – Abel