मुझे थोड़ी सी समस्या है जब मैं सी # में कुछ संचालन करना चाहता हूं। मैं आपको थोड़ा सा उदाहरण दूंगा।जेनेरिक सूची का ढेर साफ़ हो जाता है जब धक्का सूची साफ़ हो जाती है
Stack<List<HufmannLetter>> steps = new Stack<List<HufmannLetter>>();
List<HufmannLetter> letterList = new List<HufmannLetter>();
while(true){
letterList.Add("asd");
letterList.Add("sad");
steps.Push(letterList);
letterlist.Clear();
}
इस कोड में, मैं सूची में सभी आइटमों को हटाने की तुलना में अपनी लिंक्डलिस्ट को ढेर में धक्का देना चाहता हूं। जब मैं सूची साफ़ करता हूं, तो मेरी स्टैक की पहली अनुक्रमणिका गायब हो जाती है क्योंकि यह संदर्भ द्वारा पारित होती है। क्या मै गलत हु? क्योंकि मुझे नहीं पता कि ऐसा क्यों होता है।
तो मैं मूल्य विधि द्वारा पास का उपयोग करता हूं।
Stack<List<HufmannLetter>> steps = new Stack<List<HufmannLetter>>();
List<HufmannLetter> letterList = new List<HufmannLetter>();
while(true) {
letterList.Add("asd");
letterList.Add("sad");
List<HufmannLetter> tempLetterList = new List<HufmannLetter>(letterList);
steps.Push(tempLetterList);
letterlist.Clear();
}
क्या यह समस्या हल करने का एक अच्छा तरीका है? इस तरह यह काम कर रहा है, लेकिन पठनीयता कम हो जाती है। तुम मुझे क्या सलाह देते हो?
धन्यवाद ...
"क्या मैं गलत हूं?" हां, आपके द्वारा दिखाए गए कोड में कोई पास-बाय-रेफरेंस नहीं है। आप 'रेफरी' और 'आउट' की कमी से बता सकते हैं। मेरा सुझाव है कि आप http://jonskeet.uk/csharp/parameters.html और http://jonskeet.uk/csharp/references.html पढ़ते हैं नोट करें कि मान द्वारा संदर्भ पारित करना पास-बाय-रेफरेंस जैसा नहीं है। –