के बाद पहले उदाहरण पर विचार करें:सी # संकलक त्रुटि CS0122 और CS0143
public class ClassNameExample
{
private ClassNameExample()
{
//code goes here
}
}
अब, अगर मैं एक ही विधानसभा के भीतर से ClassNameExample
वर्ग का दृष्टांत करने की कोशिश, मैं की वजह से एक "दुर्गम मिल जाएगा यह सुरक्षा स्तर "कंपाइलर त्रुटि संदेश (CS0122) है।
हालांकि, अगर मैं एक अलग विधानसभा से ClassNameExample
वर्ग का दृष्टांत करने की कोशिश, मैं एक हो रही है संकलक त्रुटि संदेश "प्रकार 'क्लास' कोई कंस्ट्रक्टर्स परिभाषित है" (CS0143)
कोई व्याख्या कर सकते हैं क्यों कंपाइलर उन्हें अलग देखता है?
संदर्भ के लिए, मैंने विजुअल स्टूडियो 2012, .NET 4.5 में इसे आजमाया है।
मेरी ईमानदार राय में जब आप एक ही असेंबली कंपाइलर में हैं तो निजी कन्स्ट्रक्टर के अस्तित्व के बारे में पता है, इसलिए यह आपको बताता है कि यह निजी है। जब आप किसी अन्य असेंबली में होते हैं, तो यह केवल इतना नहीं जानता कि कक्षा किसी भी सार्वजनिक कन्स्ट्रक्टर का खुलासा नहीं करती है –
मेरा अनुमान होगा, क्योंकि एक ही असेंबली संकलित करते समय संकलक निर्माता की परिभाषा को देखता है लेकिन यह निजी है और इसलिए दुर्गम। किसी अन्य असेंबली को संकलित करते समय, कंपाइलर केवल उस असेंबली के लिए आंतरिक इंटरफ़ेस तक पहुंच के बिना प्रकाशित इंटरफेस को देखता है। उस सार्वजनिक इंटरफेस में _is_ कोई कन्स्ट्रक्टर नहीं है, जहां तक कंपाइलर का संबंध है, कोई भी नहीं है। हालांकि, मैं किसी भी विश्वसनीय स्रोत को उद्धृत नहीं कर सकता, इसलिए मुझे किसी को उत्तर के रूप में पोस्ट करने में खुशी हुई। – CompuChip