जेनरिक कई क्षेत्रों में वीबी.नेट की शक्ति और लचीलेपन का विस्तार करते हैं, लेकिन आपको सामान्य प्रदर्शन और जेनेरिक में अधिक प्रोग्रामिंग विकल्प मिलते हैं। सूची वस्तु [टी की सूची)] किसी अन्य के साथ।
काम में लाना टी की सूची), आपको यह समझना होगा कि .NET फ्रेमवर्क प्रदान करने वाले कई तरीकों को कैसे लागू किया जाए। नीचे तीन उदाहरणों का उपयोग किया गया है प्रत्येक के लिए, सब ढूँढ़ो, तथा तरह, यह दर्शाता है कि सामान्य कैसे है सूची कक्षा काम करती है।
जेनेरिक बनाने के लिए पहला कदम है सूची. आप डेटा को बहुत तरीकों से प्राप्त कर सकते हैं, लेकिन सबसे सरल है जोड़ना यह। नीचे दिए गए कोड से पता चलता है कि मेरे बीयर और वाइन संग्रह को कैसे वर्गीकृत किया जाए!
प्रारंभ कोड
पहले एक वस्तु होने की जरूरत है जो संग्रह से एक बोतल का प्रतिनिधित्व करेगी। एक विंडोज फॉर्म एप्लिकेशन में, फॉर्म क्लास को पहले एक फाइल में होना चाहिए या विजुअल स्टूडियो डिजाइनर सही तरीके से काम नहीं करेंगे, इसलिए इसे अंत में रखें:
पब्लिक क्लास की बोतल। स्ट्रिंग के रूप में सार्वजनिक ब्रांड। सार्वजनिक नाम स्ट्रिंग के रूप में। स्ट्रिंग के रूप में सार्वजनिक श्रेणी। सार्वजनिक आकार दशमलव के रूप में। सार्वजनिक उप नया (_ ByVal m_Brand As String, _। ByVal m_Name As String, _। ByVal m_Category स्ट्रिंग के रूप में, _ ByVal m_Size As Decimal) ब्रांड = m_Brand। नाम = m_Name। श्रेणी = m_Category आकार = m_Size। अंत उप। एंड क्लास
संग्रह बनाने के लिए, जोड़ना सामान। इस में क्या है फॉर्म लोड प्रतिस्पर्धा:
मंद कैबिनेट सूची के रूप में (बोतल की) = _। "नई सूची (बोतल की) मंत्रिमंडल। जोड़ें (नई बोतल (_) "कैसल क्रीक", _। "यूंटाह ब्लैंक", _ "वाइन", 750)) मंत्रिमंडल। जोड़ें (नई बोतल (_) "सियोन कैनियन ब्रूइंग कंपनी", _। "स्प्रिंगडेल एम्बर एले", _ "बीयर", 355)) मंत्रिमंडल। जोड़ें (नई बोतल (_) "स्पेनिश वैली वाइनयार्ड्स", _ "सिराह", _ "वाइन", 750)) मंत्रिमंडल। जोड़ें (नई बोतल (_) "वाशेब बियर", _ "बहुविवाह कुली", _ "बीयर", 355)) मंत्रिमंडल। जोड़ें (नई बोतल (_) "स्क्वाटर्स बीयर", _। "प्रोवो गर्ल पिल्सनर", _ "बीयर", 355))
उपरोक्त सभी कोड VB.NET 1.0 में मानक कोड है। हालाँकि, ध्यान दें कि अपने खुद को परिभाषित करके बोतल ऑब्जेक्ट, आपको एक ही संग्रह में कई प्रकार के लाभ मिलते हैं (इस मामले में, दोनों तार तथा दशमलव) और कुशल, सुरक्षित टाइप करें "देर से बाध्यकारी।"
पूर्व उदाहरण
मज़ा तब शुरू होता है जब हम तरीकों का इस्तेमाल करते हैं। शुरू करने के लिए, आइए परिचित को लागू करें प्रत्येक के लिए तरीका। Microsoft दस्तावेज़ में यह उपयोग वाक्यविन्यास परिभाषा शामिल है:
मंद उदाहरण के रूप में सूची मंद क्रिया क्रिया के रूप में (T की) आवृत्ति। फॉरच (कार्रवाई)
Microsoft आगे परिभाषित करता है कार्य के रूप में "एक विधि है कि यह करने के लिए पारित वस्तु पर कार्रवाई करता है के लिए प्रतिनिधि। वर्तमान सूची (टी) के तत्व व्यक्तिगत रूप से एक्शन (टी) प्रतिनिधि को दिए जाते हैं। "
सुझाव: प्रतिनिधियों पर अधिक के लिए, पढ़ें रनटाइम लचीलेपन के लिए Visual Basic .NET में प्रतिनिधि का उपयोग करना.
पहली चीज जिसे आपको कोड करने की आवश्यकता है वह विधि है जिसे प्रत्यायोजित किया जाएगा। इस एक महत्वपूर्ण बिंदु को समझने का स्रोत है अधिकांश VB.NET छात्रों के भ्रम की स्थिति। यह फ़ंक्शन, या सबरूटीन, वह है जहाँ सभी प्रकार के ऑब्जेक्ट्स के लिए अनुकूलित कोडिंग की जाती है।
जब सही ढंग से किया जाता है, तो आप अनिवार्य रूप से कर रहे हैं। यह इस पहले उदाहरण में वास्तव में सरल है। की एक पूरी घटना बोतल पारित हो गया है और सबरूटीन उसमें से कुछ भी आवश्यक का चयन करता है। कोडिंग प्रत्येक के लिए खुद भी सरल है। बस प्रतिनिधि के पते का उपयोग करके भरें का पता तरीका।
उप डिस्प्लेबोटल (बायल बी एज़ बॉटल) रिजल्टलिस्ट। आइटम। जोड़ें (_ b) ब्रांड और "-" और _ बी। नाम और "-" & _ b। श्रेणी और "-" और _ बी। साइज) एंड सब प्राइवेट प्राइवेट सब ForEachButton_Click (... ResultList। आइटम। क्लियर () रिजल्टलिस्ट। आइटम। जोड़ें ("प्रत्येक उदाहरण के लिए") परिणाम। आइटम। जोड़ें ("") कैबिनेट। ForEach (AddressOf displayBottle) एंड सब
FindAll उदाहरण
सब ढूँढ़ो थोड़ा और अधिक जटिल है। Microsoft प्रलेखन सब ढूँढ़ो इस तरह दिखता है:
मंद उदाहरण के रूप में सूची मंद मिलान के रूप में (टी के) मंद रिटर्न सूची के रूप में (टी के) रिटर्नवायु = उदाहरण के रूप में। FindAll (मिलान)
इस वाक्य रचना में एक नया तत्व शामिल है, विधेय (T का). Microsoft के अनुसार, यह उस पद्धति का प्रतिनिधित्व करेगा "जो मापदंड के एक सेट को परिभाषित करता है और निर्धारित करता है कि क्या निर्दिष्ट ऑब्जेक्ट उन मानदंडों को पूरा करता है। "दूसरे शब्दों में, आप कोई भी कोड बना सकते हैं जिसमें कुछ मिलेगा सूची। मैंने अपना कोड किया विधेय (T का) "बीयर" में कुछ भी खोजने के लिए वर्ग.
सूची में प्रत्येक आइटम के लिए प्रतिनिधि कोड को कॉल करने के बजाय, सब ढूँढ़ो पूरा लौटा देता है सूची (टी) केवल मैचों से युक्त है जो आपके परिणाम हैं विधेय (T का). यह इस दूसरे को परिभाषित करने के लिए आपके कोड पर निर्भर है सूची (टी) और इसके साथ कुछ करो। मेरा कोड सिर्फ आइटमों को जोड़ता है a सूची बाक्स.
निजी उप FindAllButton_Click (सिस्टम के रूप में ByVal प्रेषक। ऑब्जेक्ट, बायवाल ई अस सिस्टम। EventArgs) हैंडल FindAllButton। रिजल्ट क्लिक करें। आइटम। क्लियर () रिजल्टलिस्ट। आइटम। जोड़ें ("FindAll उदाहरण") परिणाम। आइटम। जोड़ें ("") मंद सूची के रूप में सूची (बोतल की) के अधीनस्थ = कैबिनेट। FindAll (AddressOf findBeer) प्रत्येक आर बोतल के लिए सबटल रिजल्टलिस्ट के रूप में। आइटम। जोड़ें (_ r) ब्रांड और "-" & _ r। नाम और "-" & _ r। श्रेणी और "-" और _ आर। आकार) अगला एंड सब फंक्शन FindBeer (बोतल के रूप में ByVal b) _ बुलियन इफ (b) श्रेणी = "बीयर") फिर सही एल्स रिटर्न फाल्स एंड इफ एंड फंक्शन
क्रमबद्ध उदाहरण
इस लेख की जाँच की अंतिम विधि है तरह. फिर से, Microsoft कुछ शब्दावली का उपयोग करता है जिनसे आप परिचित नहीं हो सकते हैं। वास्तव में चार अलग-अलग अधिभार हैं तरह तरीका:
- क्रमबद्ध करें ()
- क्रमबद्ध करें (IComparer (T))
- क्रमबद्ध करें (तुलना (T))
- क्रमबद्ध करें (Int32, Int32, IComparer (T))
यह आपको सूची के लिए .NET फ्रेमवर्क में परिभाषित क्रमबद्ध तरीकों का उपयोग करने देता है, अपना कोड करता है, सिस्टम का उपयोग करता है प्रारंभिक स्थिति और गणना का उपयोग करके संग्रह के प्रकार, या सॉर्ट भाग के लिए परिभाषित तुलना पैरामीटर।
इस उदाहरण में, चूंकि मैं वास्तव में इस प्रकार का प्रदर्शन करने के लिए निम्न सिंटैक्स का उपयोग करता हूं, इसलिए मैं तीसरे अधिभार का उपयोग कर रहा हूं।
एक्स। Name.x. नाम। तुलना (y नाम) (y। नाम)
मैंने अपने स्वयं के तुलना करने के लिए एक और प्रतिनिधि को कोडित किया है। चूंकि मैं अपने हिसाब से छांटना चाहता हूं नाम, मैं बस के प्रत्येक उदाहरण से उस मूल्य को खींचता हूं बोतल पारित किया है और का उपयोग करें कि वस्तु क्रमबद्ध करें (तुलना )>)). तरह विधि वास्तव में मूल को पुनर्व्यवस्थित करती है सूची (टी). विधि निष्पादित होने के बाद यही प्रक्रिया होती है।
निजी उप SortButton_Click (सिस्टम के रूप में ByVal प्रेषक। ऑब्जेक्ट, बायवाल ई अस सिस्टम। EventArgs) हैंडल सॉर्टबटन। रिजल्ट क्लिक करें। आइटम। क्लियर () रिजल्टलिस्ट। आइटम। जोड़ें ("सॉर्ट उदाहरण") परिणाम। आइटम। जोड़ें ("") कैबिनेट। कैबिनेट रिजल्टलिस्ट में बोतल के रूप में प्रत्येक आर के लिए सॉर्ट (एड्रेसऑफ सॉर्टकैब)। आइटम। जोड़ें (_ r) नाम और "-" & _ r। ब्रांड और "-" & _ r। श्रेणी और "-" और _ आर। आकार) अगला अंतिम उप निजी साझा फंक्शन क्रैककैब (_ बायवैल एक्स बॉटल के रूप में, बायल वाई अस बॉटल) इंटेक्स रिटर्न एक्स के रूप में। नाम। तुलना (y नाम) अंत समारोह
इन तरीकों का चयन उन प्रमुख तरीकों को प्रदर्शित करने के लिए किया गया था, जिनमें फ्रेमवर्क के तरीके सूची (टी) वास्तव में कोडित हैं। हालांकि, अन्य तरीकों का एक पूरा बेड़ा है। वही बनाता है सूची (टी) इतना उपयोगी!