2008-10-13 8 views
15

मैं सी # पुस्तक पढ़ने के दौरान इस कक्षा में आया और कुछ प्रश्न हैं।सिस्टम के बारे में .Linq.Lookup वर्ग

  • यह सिस्टम में क्यों जोड़ा जाता है। लिंक्स नेमस्पेस और संग्रह संग्रह नामस्थान में नहीं?
  • इस कक्षा के पीछे क्या उद्देश्य है
  • यह कक्षा प्रत्यक्ष तत्कालता के लिए क्यों नहीं है? यह केवल ToLookup एक्सटेंशन के माध्यम से उपलब्ध है, है ना?

उत्तर

17

कक्षा का उद्देश्य: एक शब्दकोश जहां एक कुंजी एकाधिक मानों को मैप कर सकती है। इसे एक-से-एक मैपिंग के बजाय समूहबद्ध करने के बारे में सोचें।

केवल ToLookup निर्णय के माध्यम से: पास। फिर, मुझे एक बुरी कॉल की तरह लगता है। दूसरी ओर, इसका मतलब है कि परिणाम बाहरी दुनिया के लिए अपरिवर्तनीय है, जो काफी अच्छा है। अपने स्वयं के संग्रह को लिखना काफी आसान है जो निश्चित रूप से इसका समर्थन करता है - लेकिन इसे "ठीक से" संग्रह में रखना बहुत अच्छा होगा। मेरा अनुमान है कि एमएस के पास पहली श्रेणी संग्रह निर्णय लेने के लिए आवश्यक कठोर डिजाइन/परीक्षण के माध्यम से जाने के लिए समय/पैसा नहीं था।

नेमस्पेस निर्णय: शायद ऊपर से संबंधित है। System.Collections.Generic में एक संस्करण होने के बाद आप स्वयं को नहीं बना सकते थे थोड़ा अजीब होगा।

6

एक तरफ के रूप में, ध्यान दें कि MiscUtil में MiscUtil.Linq.EditableLookup<,> वर्ग भी शामिल है, जो समान है; यह नियमित ILookup<,> इंटरफ़ेस लागू करता है, लेकिन पूरी तरह से उत्परिवर्तनीय है - इसलिए आप इसे बना सकते हैं और अपना खुद का मान जोड़ सकते हैं।

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