कक्षा नाम: MyAssembly.MyClass+MyOtherClass
कक्षा के नाम में "+" होने के बाद?
समस्या traditionnal डॉट, अपने कार्य के बजाय, +
विभाजक के रूप में स्पष्ट रूप से है, और अगर दूसरों विभाजक मौजूद देखने के लिए आधिकारिक दस्तावेज खोजने के लिए।
कक्षा नाम: MyAssembly.MyClass+MyOtherClass
कक्षा के नाम में "+" होने के बाद?
समस्या traditionnal डॉट, अपने कार्य के बजाय, +
विभाजक के रूप में स्पष्ट रूप से है, और अगर दूसरों विभाजक मौजूद देखने के लिए आधिकारिक दस्तावेज खोजने के लिए।
अभी जिस तरह कि एक नेस्टेड प्रकार का प्रतिनिधित्व किया है कि के रूप में
class A+B
देखा की जाएगी। उदाहरण के लिए:
namespace Foo
{
class Outer
{
class Nested {}
}
}
संकलित कोड में Foo.Outer+Nested
के पूरे नाम के साथ एक प्रकार का निर्माण करेगा। (ताकि क्या typeof(Outer.Nested).FullName
वापसी होगी, उदाहरण के लिए है।)
यह है कि क्या यह निर्दिष्ट व्यवहार है, या बस क्या माइक्रोसॉफ्ट सी # संकलक का उपयोग करने के लिए चुनता मेरे लिए स्पष्ट नहीं है; यह एक "अनपेक्षित" नाम है जिसमें आप सामान्य सी # में एक + के साथ स्पष्ट रूप से एक कक्षा घोषित नहीं कर सकते हैं, इसलिए संकलक जानता है कि यह किसी और चीज़ से संघर्ष नहीं करेगा। सी # 3 spec की धारा 10.3.8 संकलित नाम को तब तक निर्देशित नहीं करती है जब तक मैं देख सकता हूं।
संपादित करें: मैं बस देखा है Type.AssemblyQualifiedName
निर्दिष्ट करता है कि कि "+" एक नेस्टेड प्रकार का नाम पूर्व में होना करने के लिए प्रयोग किया जाता है ... लेकिन यह अभी भी स्पष्ट किया जाए या नहीं है कि वास्तव में आवश्यक या सिर्फ पारंपरिक है नहीं है।
एक और तरीका यह कार्यान्वयन विस्तार स्वयं प्रकट होता है, नेस्टेड जेनेरिक प्रकारों में है। यदि आपके पास क्लास ऑउटर
यदि नेस्टेड क्लास का नाम बस माइक्रोसॉफ्ट के सी # कंपाइलर द्वारा चुना गया था तो अन्य कंपाइलरों के साथ अंतःक्रियाशीलता कैसे संभव होगी? क्या इसका मतलब यह है कि अगर कोई नेस्टेड कक्षाओं का उपयोग नहीं कर सकता है तो उदा। मोनो कंपाइलर का उपयोग कर? –
divo: मुझे लगता है कि मोनो का सी # कंपाइलर माइक्रोसॉफ्ट के समान योजना का पालन करता है। इसी तरह कहीं और जहां सी # spec में कुछ निर्दिष्ट नहीं छोड़ा गया है। –
यह है कि संकलक एक नेस्टेड कक्षा का प्रतिनिधित्व करने के लिए मेटाडेटा में उपयोग करता है।
अर्थात
class A { class B {} }
मेटाडाटा
धन्यवाद। यह एकमात्र ऐसा संकेत है जिसे हम इस तरह से पा सकते हैं? – Graveen
मैं सिर्फ आईएलडीएएसएम में .NET (1.1) लाइब्रेरी को देख रहा था और वहां नेस्टेड प्रकारों को विभाजक के रूप में '/' दिखाया गया था। –
तो आईएलडीएएसएम झूठ बोल रहा है। –
आपको यह जानने की आवश्यकता क्यों है? आप इस ज्ञान के साथ पूरा करने की क्या कोशिश कर रहे हैं? –