रीशेपर आमतौर पर मुझे सुझाव देता है कि, और मैं अभी भी ऐसा करने का एक अच्छा कारण ढूंढ रहा हूं।क्या मुझे चर के रूप में जितना संभव हो उतना चर घोषित करना चाहिए जहां उनका उपयोग किया जाएगा?
केवल बात यह है कि मेरे दिमाग में आया था कि यह गुंजाइश यह उपयोग किया जाएगा के करीब घोषित करने, कुछ मामलों में जहां यह आवश्यक नहीं है में यह आरंभ से बच सकते हैं है (क्योंकि एक शर्त है, आदि)
int temp;
foreach (var x in collection) {
temp = x.GetValue();
//Do something with temp
}
कि
से वास्तव में अलगforeach (var x in collection) {
int temp = x.GetValue();
//...
}
मेरा मतलब है, क्योंकि यह आवंटन किया जाता है दूसरा कोड और अधिक महंगा नहीं है है: उस के साथ संबंधित कुछ निम्नलिखित है स्मृति हर बार? या दोनों एक ही हैं? बेशक, लूप समाप्त करने के बाद, दूसरे कोड में कचरा कलेक्टर temp
वैरिएबल का ख्याल रखेगा, लेकिन पहले में नहीं ...
तो उन दो कोडों के बीच कोई प्रदर्शन अंतर नहीं है? (यह एक 'int' है, लेकिन यह एक और जटिल वर्ग हो सकता है जिसके लिए स्मृति में अधिक जगह की आवश्यकता होगी ...) –
@ ऑस्कर - स्टैक वैरिएबल अनिवार्य रूप से कम प्रारंभिक लागत से अलग हैं। –
कंपाइलर लूप के बाहर लूप के भीतर घोषित चर को स्थानांतरित कर सकता है, इसलिए नहीं, वास्तव में कोई प्रदर्शन अंतर नहीं है। आप उन्हें उस दायरे की शुरुआत में घोषित करके पठनीयता और रखरखाव प्राप्त करते हैं जिसमें आपको उनकी आवश्यकता होती है। –