2012-04-20 16 views
34

मुझे सी # के साथ बहुत अनुभव नहीं है, और मैं PHP से एसोसिएटिव सरणी के साथ उपयोग किया जाता हूं।सी # में एसोसिएटिव सरणी को संभालने का सबसे आसान तरीका क्या है?

मुझे लगता है कि सी # में सूची वर्ग और कच्ची सरणी है, लेकिन मैं कुछ पल में कुछ स्ट्रिंग कुंजी को जोड़ना चाहता हूं।

इसे संभालने का सबसे आसान तरीका क्या है?

Thx!

+5

@ सर्वी: बस कुछ शब्दावली पर नाइटपिक करने के लिए, ** नहीं **, यह ** सहयोगी सरणी ** है। राडू सही है। http://en.wikipedia.org/wiki/Associative_array। इसके अलावा, ऐसी कई भाषाएं हैं जिनमें सरणी संख्याओं से अनुक्रमित नहीं होती है; जावास्क्रिप्ट एक है। और जब हम शब्दावली की आलोचना कर रहे हैं: एक ** सहयोगी सरणी ** ** हैश तालिका ** के रूप में लागू नहीं की जानी चाहिए। आप * * अमूर्त डेटा प्रकार * को इसके * कार्यान्वयन विवरण * के साथ भ्रमित कर रहे हैं। एक सहयोगी सरणी संतुलित बाइनरी पेड़ द्वारा लागू की जा सकती है, उदाहरण के लिए। –

+0

स्पष्टीकरण एरिक के लिए धन्यवाद। – Servy

उत्तर

61

शब्दकोश कक्षा का उपयोग करें। आपको जो चाहिए वह करना चाहिए। संदर्भ here है।

तो तुम कुछ इस तरह कर सकते हैं:

IDictionary<string, int> dict = new Dictionary<string, int>(); 
dict["red"] = 10; 
dict["blue"] = 20; 
+2

समझें कि एक शब्दकोश रैखिक अनुक्रमण के लिए अनुमति नहीं देता है (जब तक कि आप इसे कैसे कुंजी करते हैं), इसलिए ऊपर दिए गए उदाहरण में, 'dict [0] '(शब्दकोश का पहला तत्व प्राप्त करने का प्रयास) संकलित नहीं होगा। आप इस कई तरीकों से काम कर सकते हैं; एक समय में एक के शब्दकोश की KeyValuePair ऑब्जेक्ट्स के माध्यम से गणना करने के लिए लिंक का उपयोग करना सबसे आसान है। आदेश की गारंटी नहीं है, हालांकि (या कम से कम यह केवल कार्यान्वयन विस्तार के आधार पर गारंटीकृत है)। – KeithS

+9

@ किथ्स हालांकि एक [ऑर्डर्ड डिक्शनरी] (http://msdn.microsoft.com/en-us/library/system.collections.specialized.ordereddictionary.aspx) है यदि यह आवश्यक कार्यक्षमता है। – Servy

+1

पूरी तरह से सही और काम कर रहा है! –

12

एक शब्दकोश काम करेंगे, लेकिन नेट में बनाया साहचर्य सरणियों है एक उदाहरण NameValueCollection वर्ग (System.Collections.Specialized.NameValueCollection) है।।

शब्दकोश पर थोड़ा सा लाभ यह है कि यदि आप एक अस्तित्वहीन कुंजी को पढ़ने का प्रयास करते हैं, तो यह अपवाद फेंकने के बजाए शून्य हो जाता है। मान सेट करने के दो तरीके नीचे दिए गए हैं।

NameValueCollection list = new NameValueCollection(); 
list["key1"] = "value1"; 

NameValueCollection list2 = new NameValueCollection() 
{ 
    { "key1", "value1" }, 
    { "key2", "value2" } 
}; 
संबंधित मुद्दे