मैं सोच रहा हूं कि सी # में एक चर के नाम में पहले इस्तेमाल किए गए चर नाम का उपयोग क्यों नहीं किया जाता है। इस तरह:एक बच्चे के दायरे में उपयोग किए गए एक चर नाम का उपयोग
if (true)
{
int i = 1;
}
int i = 2;
ऊपर कोड संकलन एक त्रुटि पैदा करता है:
A local variable named 'i' cannot be declared in this scope because it would give a different meaning to 'i', which is already used in a 'child' scope to denote something else
और फिर भी आप चर या तो बच्चे को दायरे में परिभाषित का उपयोग नहीं कर सकते हैं। ऊपर दिया गया कोड जावा में ठीक काम करता है और मुझे कोई कारण नहीं दिख रहा है कि यह सी # में क्यों नहीं है। मुझे यकीन है कि एक अच्छा कारण है, लेकिन यह क्या है?
मैंने वास्तव में सोचा कि "वास्तविक" कारण होगा, क्योंकि मैं वास्तव में समझ नहीं पा रहा हूं कि कोई ऐसा क्यों पसंद करेगा। : डी लेकिन मुझे बिंदु दिखाई देता है और यह जानना अच्छा क्यों है। – Carlos
खिलोन: मुझे सच में लगता है कि असली कारण यह है कि मैंने सुझाव दिया है; ^) – Toad
@ करलोस फ़ैई, _real_ कारण यह है कि सभी परिवर्तनीय घोषणाओं को किसी बिंदु (संकलन या जेआईटी) पर उनके दायरे के शीर्ष पर ले जाया जाता है। इसलिए, आपकी घोषणाओं के संबंध में आपके क्षेत्रों का क्रम थोड़ा मायने रखता है, एक बच्चे/पूर्वजों का दायरा संघर्ष हमेशा रनटाइम पर एक संघर्ष होगा। संकलक इसे पहले से अस्वीकार कर देता है। – Gusdor