2016-10-13 6 views
19

new List<string>().ToString(); क्यों निम्नलिखित करता है :?जेनेरिक प्रकारों पर ToString() को वर्ग ब्रैकेट क्यों है?

System.Collections.Generic.List`1[System.String] 

यह System.Collections.Generic.List<System.String> वापस क्यों नहीं लाएगा। अजीब गैर सी # वाक्यविन्यास के साथ क्या है?

+3

शायद ज़रुरत पड़े यो <> कोष्ठक http://stackoverflow.com/a/14284719/797249 – Artiom

+0

व्यक्ति जो क्योंकि यह आधारित राय है इस बंद करने के लिए मतदान करने के लिए के साथ नाम प्राप्त करना चाहते हैं। यह राय कैसे आधारित है? प्रदान किया गया जवाब पूरी तरह से उद्देश्य है। –

उत्तर

18

क्योंकि <> ब्रैकेट सी # वाक्यविन्यास है। System.Object.ToString() कार्यान्वयन सीएलआर वाक्यविन्यास के साथ प्रकार का नाम देता है।

इस पर विचार करें:

System.Collections.Generic.List<System.String> 

अच्छा लग रहा है जब आप सी # में विकसित कर रहे हैं, लेकिन कहते हैं कि तुम C++/CLI से ToString कहते हैं। क्या आप इसके बजाय निम्नलिखित की अपेक्षा करेंगे?

System::Collections::Generic::List<System::String> 

जाहिर है, व्यवहार पर जो भाषा कॉलर में संकलित किया गया आधारित चाहिए नहीं बदल सकता है इसलिए लौटे स्ट्रिंग भाषा-तटस्थ है।


This MSDN page सूचियों प्रकार का नाम CLR द्वारा इस्तेमाल किया सम्मेलनों। (लिंक के लिए Matthew Watson पर धन्यवाद)।

arity (`1 हिस्सा), तो आपको ECMA-335 में और अधिक जानकारी (CLI विनिर्देश) प्राप्त कर सकते हैं के लिए के रूप में:

I.10.7.2 प्रकार नाम और arity एन्कोडिंग

सीएलएस - सामान्य जेनेरिक प्रकार के नाम प्रारूप name[`arity] का उपयोग करके एन्कोड किए गए हैं, जहां [...] इंगित करता है कि गंभीर उच्चारण वर्ण ` और arity एक साथ वैकल्पिक हैं। इनकोडिंग नाम इन नियमों का पालन करेगा:

  1. नाम एक आईडी (विभाजन द्वितीय देखें) कि ` वर्ण नहीं किया जाएगा।
  2. arity को अग्रणी शून्य या रिक्त स्थान के बिना एक हस्ताक्षरित दशमलव संख्या के रूप में निर्दिष्ट किया गया है।
  3. सामान्य सामान्य प्रकार के लिए, arity इस प्रकार घोषित प्रकार के पैरामीटर की संख्या है।
  4. एक नेस्टेड जेनेरिक प्रकार के लिए, arity नए परिचय प्रकार पैरामीटर की संख्या है।
+6

यह भी देखें [यहां] (https://msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname (v = vs.110) .aspx), जिसमें एक सारणी है जिसमें सभी अलग-अलग प्रतीकों का उपयोग किया जाता है सीएलआर प्रकार के नाम। –

+1

@ मैथ्यू वॉटसन लिंक के लिए धन्यवाद, मैं वास्तव में दस्तावेज़ों को खोजने की कोशिश कर रहा था, यदि आप –

+0

पर ध्यान नहीं देते हैं तो मैं जवाब में जोड़ दूंगा कि इच्छा है कि मैं सीएलआई विनिर्देश जोड़ने के लिए एक बार फिर से ऊपर जा सकूं ..:) –

संबंधित मुद्दे