निम्न शॉर्ट कोड स्निपेट पर विचार करें।क्या आप नामांकन घोषणाओं और सदस्यों के साथ सी # 'उपयोग' कीवर्ड से जुड़े इस एज केस को समझा सकते हैं?
namespace B
{
public class Foo
{
public string Text
{
get { return GetType().FullName; }
}
}
}
namespace A.B
{
public class Foo
{
public string Text
{
get { return GetType().FullName; }
}
}
}
साथ उदाहरण # 1 पहले परिचित हों।
using B;
namespace A.C
{
public static class Program
{
public static void Main()
{
Console.WriteLine(new Foo().Text);
}
}
}
अब उदाहरण # 2 पर विचार करें।
namespace A.C
{
using B; // Notice the placement here.
public static class Program
{
public static void Main()
{
Console.WriteLine(new Foo().Text);
}
}
}
उदाहरण # 1 के बारे में बहुत कुछ अनोखा नहीं है। हालांकि, उदाहरण # 2 के साथ चीजें दिलचस्प हो जाती हैं। यह जरूरी है कि आप उदाहरणों में उपयोग किए गए सभी पहचानकर्ताओं पर ध्यान दें। एक मजेदार अभ्यास के रूप में यह अनुमान लगाने का प्रयास करें कि संकलक में इसे प्लग किए बिना क्या होता है। मैं यहां जवाब प्रकट नहीं करूंगा क्योंकि 1) अपने आप को आजमाने के लिए काफी आसान है और 2) मैं मस्ती को बर्बाद नहीं करना चाहता हूं।
कार्यक्रम होगा:
- संकलन नहीं
- प्रदर्शन B.Foo
- प्रदर्शन ABFoo
सवाल ... कहाँ सी # विनिर्देश में इस व्यवहार को वर्णित है ?
मैंने सी # 4.0 विनिर्देशन और विशेष रूप से बुलेट # 2 में सेक्शन 3.7 पर एक नज़र डाली, लेकिन मुझे नहीं लगता कि यह व्यवहार बताता है। अगर कुछ भी मुझे लगभग सोचता है कि संकलक विनिर्देश के विपरीत विरोधाभासी व्यवहार कर रहा है।
आपको इस प्रश्न को इस ब्लॉग के लेखक को पोस्ट करना चाहिए: http://blogs.msdn.com/b/ericlippert/ वह आपके लिए बिल्कुल जवाब देगा। – David
मैं अपने ब्लॉग से परिचित हूं। वह अक्सर एसओ पर पोस्ट करता है ताकि वह यहां एक स्टैब ले सके। –
हाँ, मैं एरिक के का इंतजार कर रहा हूँ अपने आप का जवाब :) –