2009-11-19 14 views
7

पर मैं समझता हूँ इंडेक्सर के रूप में यद्यपि वर्ग ही एक सरणी थे एक वर्ग के भीतर एक संग्रह का उपयोग करने के लिए सक्षम।सी # - अनुक्रमणिका इसके सार्थक आवेदन

मान लीजिए कि हम एक परियोजना विकसित कर रहे हैं, हम इस तरह के सूचकांक के असली प्रैक्टिकल उपयोग (उदाहरण मदद कर सकते हैं) कहां फिट करते हैं?

उत्तर

8

उदाहरण के लिए ढांचे में संग्रह संग्रह कक्षाओं में से किसी एक को देखें। अगर मैं एक इंडेक्सर के बिना एक भाषा में एक hashtable से किसी आइटम को पुनः प्राप्त करने के लिए गए थे, मैं जैसे वाक्य रचना का प्रयोग करेंगे:

object o = table.getvalue(key); 

जहां एक इंडेक्सर कुछ हद तक सरल वाक्य रचना की अनुमति देता है:

object o = table[key]; 

(जानबूझ कर अनदेखी टाइपिंग/उपरोक्त नमूने में जेनेरिक मुद्दे)

5

आपके पास ढांचे के सामान्य संग्रह में कई उदाहरण हैं। शब्दकोश एक बहुत अच्छा उदाहरण है:

Dictionary<string, User> Users; 

Users["Jorge"].ResetPassword(); 

कि बहुत सुंदर और

Users.GetElementByKey("Jorge").ResetPassword(); 
1

खैर से आसान होगा, indexers प्रयोग करने के लिए स्पष्ट आवेदन रहे हैं ... (आश्चर्य) संग्रह।

जैसे:

  • सूचियाँ:

    list[4] 
    
  • हैश टेबल:

    table["foo"] 
    table[Color.Black] 
    

याद रखें कि indexers तर्क पूर्णांक सीमित नहीं हैं।

2

मान लीजिए कि आप अन्य डेवलपर्स के लिए माइक्रोसॉफ्ट .NET Framework विकसित कर रहे हैं (जो वास्तव में एक "असली दुनिया परियोजना" है)। आपको एक वर्ग लिखना होगा जो एक सरणी की तरह कार्य करता है लेकिन गतिशील रूप से आकार बदलने का समर्थन करता है (List<T> कक्षा)। एक इंडेक्सर के बिना, आप दो तरीकों प्राप्त करने के लिए लिख सकते हैं और तत्वों सेट कर सकते हैं:

public T get(int index) { ... } 
public void set(int index, T value) { ... } 
// (Java advocates: no offense intended) 

मान लें अपने पुस्तकालय का एक उपयोगकर्ता दूसरा तत्व बढ़ाने के लिए करना चाहता है। वह लिखने के लिए होगा:

list.set(1, list.get(1) + 1); 
एक इंडेक्सर साथ

, वाक्य रचना को समझने के लिए, बहुत सरल अधिक पठनीय है, और आसान है:

list[1]++; 

(समान तर्क Dictionary<TKey,TValue> तरह बातें करने के लिए आवेदन ...)

0

यदि संग्रह सॉर्ट किया गया है, तो पहला और अंतिम तत्व न्यूनतम या अधिकतम तत्व प्राप्त करने के लिए उपयोगी हो सकता है।

एएसपी में।नेट, ऐसी कई ऑब्जेक्ट्स हैं जो एप्लिकेशन, सत्र और अनुरोध जैसे इंडेक्सर्स का उपयोग करती हैं।

3

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

जबकि यह सच है, तो आप एक वर्ग के भीतर ही मदों की एक स्थायी संग्रह नहीं है कि लिख सकते हैं, लेकिन अभी भी जब अनुक्रमित गतिशील रूप से एक गणना मूल्य प्रदान करने के लिए सक्षम हो। डेटा को इंटरनेट से वास्तविक समय में एकत्र किया जा सकता है, या किसी अन्य डेटा स्रोत - मुझे लगता है कि एक उदाहरण के रूप में एक वर्ग SearchResults, जिसे मैं इस तरह की स्ट्रिंग के लिए Google खोज परिणामों को प्राप्त करने के लिए उपयोग कर सकता हूं: Console.out.WriteLine(SearchResults["Stackoverflow"].count)। यह डेटा केवल तभी इकट्ठा करता है जब मैं इसे से पूछ रहा हूं और पुनर्प्राप्त वस्तुओं का संग्रह वापस कर सकता हूं।

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