सी # एक और क्षेत्र को संदर्भित करने के लिए एक उदाहरण क्षेत्र प्रारंभकर्ता अनुमति नहीं है।की वैचारिक कारण 'ए क्षेत्र प्रारंभकर्ता संदर्भ नहीं दे सकता गैर स्थिर क्षेत्र, विधि, या संपत्ति' CS0236 त्रुटि
class A
{
string s1 = "";
string s2 = s1;
}
क्योंकि "s2" संदर्भ "एस 1": उदाहरण के लिए इस कोड को मान्य नहीं है।
लेकिन इसकी अनुमति क्यों नहीं है?
मेरी पहली सोचा था कि सी # चश्मा किसी भी आरंभीकरण आदेश की गारंटी नहीं है, लेकिन चश्मा क्रम के अनुसार घोषणा के क्रम में है:
चर initializers में शाब्दिक क्रम में क्रियान्वित कर रहे हैं जो वे कक्षा घोषणा में दिखाई देते हैं।
तो अगर आदेश निर्धारित है कि इस तरह के कोड के नुकसान क्या हो सकते हैं?
आपकी मदद के लिए अग्रिम धन्यवाद।
संपादित करें:
के जवाब के अनुसार HPS, 0xA3 और पीटर:
विरासत परिदृश्य में प्रारंभ कीक्रम बहुत भ्रामक हो सकता है,
ऐसी सुविधा को कार्यान्वित करना होगा थोड़ा लाभ के लिए संकलक विकास दल से कुछ संसाधनों की आवश्यकता,
यह (धन्यवाद पीटर) तार्किक कारणों के लिए विधि या गुण का उपयोग करना संभव नहीं है, तो स्थिरता के लिए एक ही क्षेत्रों के लिए सच है।
यह ध्यान देने योग्य है कि vb।बेस-ऑब्जेक्ट निर्माण के बाद नेट रन फील्ड प्रारंभकर्ता, और उन्हें निर्मित वस्तु का संदर्भ देने की अनुमति देता है। मैं इसे एक अच्छी बात मानता हूं, खासतौर से उन मामलों में जहां क्षेत्रों में एक परिवर्तनीय संबंध मौजूद है। क्षेत्र प्रारंभकर्ताओं के लिए कन्स्ट्रक्टर पैरामीटर को उजागर करने से यह बेहतर होगा यदि कम प्रारंभिक थे। – supercat