2013-01-03 23 views
8

मैं सिर्फ एक सी # परियोजना में इस देखा:"अजीब" सी # संपत्ति वाक्य रचना

public char this[int index] 

मैं अपने आप को सी # करने के लिए नए विचार करें; कोई भी इसका अर्थ क्या कर सकता है?

+3

"मैं खुद को सी # के लिए नया मानता हूं, कोई भी सी ++ में इसका मतलब क्या कर सकता है" रुको, क्या? – BoltClock

+2

@ बोल्टक्लॉक ए सी ++ व्यक्ति ने इसे सी # में देखा? – Shark

+2

@ शार्क: मैंने यही सोचा - लेकिन केवल दो बार लेने के बाद। – BoltClock

उत्तर

15

यह एक सूचकांक है।

इंडेक्सर्स श्रेणी या संरचना के उदाहरणों को सरणी जैसे अनुक्रमित करने की अनुमति देते हैं। इंडेक्सर्स गुणों के समान हैं, सिवाय इसके कि उनके एक्सेसर्स पैरामीटर लेते हैं। एक सूचकांक सरणी की तरह वाक्यविन्यास प्रदान करता है। यह एक प्रकार के रूप में एक प्रकार के रूप में तक पहुंचने की अनुमति देता है। इंडेक्सर्स जैसे गुण अक्सर बैकिंग स्टोर तक पहुंचते हैं। हम अक्सर int प्रकार के पैरामीटर को स्वीकार करते हैं और सरणी प्रकार के बैकिंग स्टोर तक पहुंचते हैं।

से http://www.dotnetperls.com/indexer

string s = "hello"; 
Console.WriteLine (s[0]); // 'h' 
Console.WriteLine (s[3]); // 'l' 

इसे पढ़ें एक इंडेक्सर

को लागू करने के लिए एक इंडेक्सर लिखने के लिए, को परिभाषित एक संपत्ति इस कहा जाता है, कोष्ठक वर्ग में तर्क को निर्दिष्ट। उदाहरण के लिए:

Sentence s = new Sentence(); 
Console.WriteLine (s[3]); // fox 
s[3] = "kangaroo"; 
Console.WriteLine (s[3]); // kangaroo 

एक प्रकार कई indexers, विभिन्न प्रकार के मानकों के साथ प्रत्येक घोषित कर सकता है:

class Sentence 
{ 
    string[] words = "The quick brown fox".Split(); 
    public string this [int wordNum] // indexer 
    { 
     get { return words [wordNum]; } 
     set { words [wordNum] = value; } 
    } 
} 

यहाँ कैसे हम इस इंडेक्सर इस्तेमाल कर सकते हैं है। एक इंडेक्सर भी एक से अधिक पैरामीटर ले जा सकते हैं:

public string this [int arg1, string arg2] 
{ 
    get { ... } set { ... } 
} 

Indexers आंतरिक रूप से, तरीकों get_Item और set_Item नामक संकलन इस प्रकार है:

public string get_Item (int wordNum) {...} 
public void set_Item (int wordNum, string value) {...} 

संकलक डिफ़ॉल्ट-आप से नाम Item चुनता है वास्तव में कर सकते हैं इसे द्वारा अपने इंडेक्सर को निम्नलिखित विशेषता के साथ सजाने के लिए बदलें:

[System.Runtime.CompilerServices.IndexerName ("Blah")] 
7

एक इंडेक्सर कहा जाता है यही कारण है कि। उनके बारे में और पढ़ें at MSDN

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