2012-12-12 9 views
5

मैं इस तरह एक संपत्ति के साथ एक आंशिक वर्ग को परिभाषित किया है के रूप में ही नहीं किया जा सकता फ़ील्ड्स डिक्शनरी की सामग्री। लेकिन जब मैं निर्माण मैं मिलता है:सदस्य नामों आंशिक वर्ग के साथ उनके संलग्नित प्रकार

क्यों "सदस्य नाम उनके संलग्नित प्रकार के समान न हो सकता है?"

उत्तर

12

इंडेक्सर्स के पास स्वचालित रूप से Item का डिफ़ॉल्ट नाम है - जो आपकी कक्षा का नाम है। जहां तक ​​सीएलआर का संबंध है, एक सूचकांक केवल पैरामीटर के साथ एक संपत्ति है, और आप एक संपत्ति, विधि इत्यादि के साथ समान श्रेणी के साथ घोषित नहीं कर सकते हैं।

एक विकल्प आपकी कक्षा का नाम बदलना है, इसलिए इसे Item नहीं कहा जाता है। एक और सूचकांक के लिए प्रयुक्त "संपत्ति" का नाम बदलना होगा, [IndexerNameAttribute] के माध्यम से।

छोटा brokenness के उदाहरण:

class Item 
{ 
    public int this[int x] { get { return 0; } } 
} 

नाम परिवर्तन से फिक्स्ड:

class Wibble 
{ 
    public int this[int x] { get { return 0; } } 
} 

या विशेषता के आधार पर:

using System.Runtime.CompilerServices; 

class Item 
{ 
    [IndexerName("Bob")] 
    public int this[int x] { get { return 0; } } 
} 
+0

कि यह समझाया। धन्यवाद! मैं पहले विशेषता के तरीके पर एक नज़र डालेगा। – espvar

+0

तो इसके बारे में भी उलझन में, धन्यवाद! – Patrick

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