2012-07-30 19 views
6

मेरा .NET एप्लिकेशन उपयोगकर्ताओं के संग्रह के साथ काम करता है। उपयोगकर्ता ऑब्जेक्ट में उपयोगकर्ता नाम, पूर्ण नाम, डोमेन होता है ....सूची या शब्दकोश के बीच चुनें

मुझे आश्चर्य है कि मैं किस प्रकार के संग्रह को 1) सूची या 2) शब्दकोश के बीच उपयोगकर्ताओं को स्टोर करना पसंद करूंगा, जहां शब्दकोश कुंजी है उपयोगकर्ता नाम।

मैं समझता हूं कि उपयोगकर्ता को उपयोगकर्ता नाम से पुनर्प्राप्त करने के लिए शब्दकोश विकल्प सबसे तेज़ है, लेकिन उपयोगकर्ता नाम दो बार स्थिरता त्रुटि का संदर्भ दिया जा सकता है। (शब्दकोश कुंजी के रूप में और उपयोगकर्ता विशेषता के रूप में)? क्या आप मुझे समझा सकते हैं कि डिज़ाइन बिंदु से अंतर क्या हैं?

+1

आप शब्दकोश में समान मूल्य के दो कुंजी नहीं रख पाएंगे। क्या आपके पास एक अनूठा क्षेत्र नहीं है? – davenewza

+0

यहां देखें: http://stackoverflow.com/questions/7914830/what-is-the-difference-between-list-and-dictionary-in-c-sharp – bitsmuggler

+0

कृपया अक्सर पूछे जाने वाले प्रश्नों की समीक्षा करें: इस प्रश्न का उत्तर विशेष रूप से नहीं दिया जा सकता है एक ऐसा सामान्य अंत। – Richard

उत्तर

2

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

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

3

यदि आप आमतौर पर उपयोगकर्ता नाम द्वारा उपयोगकर्ता की तलाश करते हैं, तो निश्चित रूप से एक शब्दकोश का उपयोग करें। एक सूची का उपयोग करके आपको सही तरीके से अपना रास्ता "foreach" करना होगा! स्थिरता के लिए, मैं एक प्रबंधक वर्ग को लागू करता हूं जिसे केवल शब्दकोश में हेरफेर करने की अनुमति दी जाएगी, इस प्रकार स्थिरता लागू होगी। कई सदस्यता इंजनों में, उपयोगकर्ता नाम बदला नहीं जा सकता है। क्या इससे आपके समाधान में मदद मिलेगी?

0

यह आवश्यकताओं पर निर्भर करता है, मुझे लगता है कि छोटी सूची के लिए प्रदर्शन अंतर नगण्य होगा और सूची का उपयोग स्थिरता पर विचार करने के लिए एक पसंदीदा दृष्टिकोण होना चाहिए और आपके पास क्वेरी हो सकती है।

var user = Users.SingleOrDefault(user => user.username == 'username') 
0

मैं वस्तुओं की सूचियों को प्राथमिकता देता हूं, खासकर जब डेटा डेटाबेस में संग्रहीत होता है। डेटा स्रोत से पूछने में सक्षम होने और वापस लौटाई गई सूची बहुत उपयोगी है। यह भी प्राथमिकता दी जाती है जब डेटा अनुक्रमिक रूप से उपयोग किया जाता है, जैसे डेटा ग्रिड के साथ।

मुझे उम्मीद है कि इससे मदद मिलती है।