2010-03-25 12 views
12

मुझे सी # अच्छी तरह से पता है, लेकिन यह मेरे लिए कुछ अजीब बात है। कुछ पुराने कार्यक्रम में, मैंने यह कोड देखा है:संपत्ति के रूप में 'यह' कीवर्ड

public MyType this[string name] 
{ 
    ......some code that finally return instance of MyType 
} 

इसे कैसे कहा जाता है? इसका क्या उपयोग है?

उत्तर

25

यह indexer है। के बाद आप यह घोषित आप इस तरह कर सकते हैं:

class MyClass 
{ 
    Dictionary<string, MyType> collection; 
    public MyType this[string name] 
    { 
     get { return collection[name]; } 
     set { collection[name] = value; } 
    } 
} 

// Getting data from indexer. 
MyClass myClass = ... 
MyType myType = myClass["myKey"]; 

// Setting data with indexer. 
MyType anotherMyType = ... 
myClass["myAnotherKey"] = anotherMyType; 
+0

यह उत्तर अधिक पूरा होगा यदि आपने संपत्ति को ".... कुछ कोड" ब्लॉक में एक्सेसर (और/या सेट) एक्सेसर दिखाया है। यह सुझाव देता है कि यह एक विधि की तरह है। –

+0

धन्यवाद, मैंने जवाब अपडेट किया है। –

+0

और जेनेरिक संग्रहों में निर्मित होने से बहुत कम आम बना दिया जो अधिकांश लोगों की जरूरतों को पूरा करता है। अब मानक व्यवहार प्राप्त करने के लिए अपने दृढ़ता से टाइप किए गए संग्रह लिखने की आवश्यकता नहीं है। –

6

यह एक Indexer Property है। यह आपको इंडेक्स द्वारा सीधे अपनी कक्षा तक पहुंचने की अनुमति देता है, उसी तरह आप एक सरणी, एक सूची या एक शब्दकोश तक पहुंच सकते हैं।

आपके मामले में, आप की तरह कुछ हो सकता था:

public class MyTypes 
{ 
    public MyType this[string name] 
    { 
     get { 
      switch(name) { 
       case "Type1": 
         return new MyType("Type1"); 
       case "Type2": 
         return new MySubType(); 
      // ... 
      } 
     } 
    } 
} 

फिर आप उपयोग करने में सक्षम हो जाएगा इस तरह:

MyTypes myTypes = new MyTypes(); 
MyType type = myTypes["Type1"]; 
0

यह एक इंडेक्सर, आम तौर पर एक संग्रह प्रकार वर्ग के रूप में इस्तेमाल है ।

Using Indexers (C# Programming Guide) पर एक नज़र डालें।

2

यह एक विशेष संपत्ति है जिसे इंडेक्सर कहा जाता है। यह आपकी कक्षा को सरणी की तरह एक्सेस करने की अनुमति देता है।

myInstance[0] = val; 

आप कस्टम संग्रह में सबसे अधिक बार इस व्यवहार देखेंगे, के रूप में सरणी-वाक्य रचना एक संग्रह है जो एक महत्वपूर्ण मूल्य से पहचाना जा सकता है, आमतौर पर उनकी स्थिति में तत्वों पहुँचने के लिए एक अच्छी तरह से ज्ञात इंटरफेस (के रूप में है सरणी और सूचियां) या एक तार्किक कुंजी (जैसे शब्दकोश और हैशटेबल्स में)।

आप एमएसडीएन आलेख Indexers (C# Programming Guide) में अनुक्रमणिका के बारे में और अधिक जानकारी प्राप्त कर सकते हैं।

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