2013-02-19 17 views
5

में सामान्य सूची वर्ग मैं वर्तमान में अपना खुद का मूल जेनेरिक सूची वर्ग (पूर्वनिर्धारित व्यक्ति कैसे काम करता है) पर बेहतर समझ प्राप्त करने के लिए बना रहा हूं। मेरे पास केवल समस्या यह है कि मैं सरणी के अंदर तत्वों तक नहीं पहुंच सकता क्योंकि आप आमतौर पर "System.Collections.Generic.List" का उपयोग करके कहते हैं।सी #

GenericList<type> list = new GenericList<type>(); 
list.Add(whatever); 

यह ठीक काम करता है, लेकिन जब तक पहुँचने के लिए "जो" मैं लिखने में सक्षम होना चाहता हूँ की कोशिश कर रहा :

list[0]; 

लेकिन वह स्पष्ट रूप से के बाद से मैं स्पष्ट रूप से कुछ याद कर रहा हूँ काम नहीं करता है कोड में, मुझे अपने अन्यथा पूरी तरह से काम कर रहे जेनेरिक वर्ग में जोड़ने की क्या ज़रूरत है?

+0

क्या आपके 'GenericList' वर्ग करता है हमशक्ल? – LukeHennerley

+0

संयोग से, एक विशेषता जो सामान्य सूची में उपयोगी हो सकती है वह एक विधि है जैसे 'सार्वजनिक शून्य अधिनियमऑनमेंट (इंट इंडेक्स, एक्टबीरफ प्रो, रेफ टीपी 1 पैरा 1) {proc (रेफ ऐरे [इंडेक्स], रेफरी टीपी पैरा 1); } 'जो कोड को सूची आइटम पर सीधे कार्य करने की अनुमति देगा [मान लीजिए' सार्वजनिक प्रतिनिधि शून्य अधिनियम एक्टबीरफ (रेफरी टी 1 पी 1, रेफ टी 2 पी 2); ']। अगर कोई उदाहरण है एक 'जेनेरिकलिस्ट ', इस तरह की एक विधि कोड को 'myList.ActOnItem (इंडेक्स, (रेफ आयत आर, रेफ int v) => {rX - = v; r.Width + = v;}, रेफ चौड़ाई समायोजित करने की अनुमति दे सकती है) ' एक सूची आइटम "इन-प्लेस" को अपडेट करने के लिए। – supercat

उत्तर

12

यह एक indexer कहा जाता है, इसलिए की तरह लिखा:

public T this[int i] 
{ 
    get 
    { 
     return array[i]; 
    } 
    set 
    { 
     array[i] = value; 
    } 
} 
+0

मुझे संदेह है कि ओपी का अर्थ हो सकता है कि उसे 'जेनेरिकलिस्ट' के उदाहरण तक पहुंचने पर 'केवल असाइनमेंट, कॉल, वेतन वृद्धि, कमी और नए ऑब्जेक्ट एक्सप्रेशन को कथन के रूप में इस्तेमाल किया जा सकता है'? जाहिर है कि अगर वह इंडेक्स तक भी नहीं पहुंच सकता है तो आपका जवाब ठीक है :) – LukeHennerley

+0

@LukeHennerley मेरा मानना ​​है कि ओपी अपने 'जेनेरिकलिस्ट' प्रकार के भीतर संपत्ति घोषणा की तलाश कर रहा था जैसे कि: जेनेरिकलिस्ट सूची 'का एक उदाहरण दिया गया है, वे एक सूचकांक जैसे 'सूची [0] 'का उपयोग कर इसके भीतर एक तत्व का उपयोग कर सकते हैं। –

+0

मुझे बहुत संदेह था, सिर्फ यह सोच रहा था कि ओपी को गलत व्याख्या कैसे किया जा सकता है। वैसे भी, +1 :) – LukeHennerley

1

मैं तुम सब IList<T> को लागू करने की जरूरत है लगता है, सभी बुनियादी कार्यक्षमता प्राप्त करने के लिए

public interface IList<T> 
    { 

    int IndexOf(T item); 

    void Insert(int index, T item); 

    void RemoveAt(int index); 

    T this[int index] { get; set; } 
    }