القائمة العامة المفيدة في VB.NET

click fraud protection

يعمل Generics على توسيع قوة ومرونة VB.NET في العديد من المجالات ، ولكنك تحصل على فائدة أداء أكبر والمزيد من خيارات البرمجة في العام قائمة موضوع [قائمة (من T)] من أي دولة أخرى.

ليستخدم قائمة (من T)، عليك أن تفهم كيفية تنفيذ العديد من الأساليب التي يوفرها .NET Framework. فيما يلي ثلاثة أمثلة تستخدم ForEach, جد كلو فرز، وهذا يوضح كيف عام قائمة أعمال الطبقة.

الخطوة الأولى هي إنشاء عام قائمة. يمكنك الحصول على البيانات بطرق عديدة ، ولكن أبسطها هو فقط أضف عليه. يوضح الكود أدناه كيفية تصنيف مجموعة البيرة والنبيذ الخاصة بي!

كود البدء

يجب أولاً أن يكون هناك كائن يمثل زجاجة من المجموعة. في تطبيق Windows Forms ، يجب أن تكون فئة النموذج أولاً في ملف أو لن يعمل مصمم Visual Studio بشكل صحيح ، لذا ضع هذا في النهاية:

زجاجة فئة عامة. العلامة التجارية العامة كسلسلة. الاسم العام كسلسلة. الفئة العامة كسلسلة. الحجم العام كعشري. Public Sub New (_. ByVal m_Brand As String، _. ByVal m_Name As String، _. ByVal m_Category كسلسلة ، _. ByVal m_Size As عشري) العلامة التجارية = m_Brand. الاسم = m_Name. الفئة = m_Category. الحجم = m_Size. نهاية فرعية. نهاية الفصل الدراسي
instagram viewer

لبناء المجموعة ، أضف العناصر. هذا ما يوجد في تحميل النموذج حدث:

خزانة خافتة كقائمة (زجاجة) = _. "قائمة جديدة (زجاجة) خزانة. يضاف (زجاجة جديدة (_. "كاسل كريك" _. "Uintah Blanc" ، _. "نبيذ" ، 750)) خزانة. يضاف (زجاجة جديدة (_. "شركة صهيون كانيون تخمير" _. "Springdale Amber Ale" _. "بيرة" ، 355)) خزانة. يضاف (زجاجة جديدة (_. "وادي الكروم الاسباني" _. "سيرة" _. "نبيذ" ، 750)) خزانة. يضاف (زجاجة جديدة (_. "واساتش بيرز" _. "تعدد الزوجات بورتر" _. "بيرة" ، 355)) خزانة. يضاف (زجاجة جديدة (_. "بيرة القرفصاء" _. "Provo Girl Pilsner" _. "بيرة" ، 355))

كل الكود أعلاه هو كود قياسي في VB.NET 1.0. ومع ذلك ، لاحظ ذلك عن طريق تحديد خاصتك زجاجة الكائن ، تحصل على فوائد أنواع متعددة في نفس المجموعة (في هذه الحالة ، كلاهما خيط و عدد عشري) وكفاءة ، اكتب "الربط المتأخر" الآمن.

مثال ForEach

تبدأ المتعة عندما نستخدم الأساليب. لنبدأ ، دعنا نطبق المألوف ForEach طريقة. تتضمن وثائق Microsoft تعريف بنية الاستخدام هذا:

خافت مثيل كقائمة خافت كإجراء (من T). ForEach (إجراء)

تحدد Microsoft كذلك عمل كـ "مفوض إلى أسلوب يقوم بتنفيذ إجراء على الكائن الذي تم تمريره إليه. يتم تمرير عناصر القائمة الحالية (T) بشكل فردي إلى مندوب الإجراء (T). "

تلميح: لمعرفة المزيد عن المندوبين ، اقرأ استخدام المندوبين في Visual Basic .NET لمرونة وقت التشغيل.

أول شيء تحتاج إلى ترميزه هو الطريقة التي سيتم تفويضها. سوء فهم هذه النقطة الرئيسية هي مصدر معظم من ارتباك طلاب VB.NET. هذه الوظيفة ، أو روتين فرعي ، هي المكان الذي يتم فيه إجراء كل الترميز المخصص لكائنات النوع "من".

عند القيام بشكل صحيح ، تكون قد أنهيت عملك بشكل أساسي. الأمر بسيط حقًا في هذا المثال الأول. نسخة كاملة من زجاجة يتم تمريره ويختار الروتين أي شيء مطلوب منه. ترميز ForEach في حد ذاته بسيط أيضًا. ما عليك سوى ملء عنوان المندوب باستخدام عنوان ال طريقة.

القائمة الفرعية زجاجة (ByVal b كزجاجة) قائمة النتائج. العناصر. يضاف (_ ب. العلامة التجارية & "-" & _ b. الاسم & "-" & _ b. الفئة & "-" & _ b. الحجم) End Sub Private Sub ForEachButton_Click (... قائمة النتائج. العناصر. مسح () قائمة النتائج. العناصر. أضف (ResultList) "لكل مثال". العناصر. أضف خزانة (""). ForEach (AddressOf displayBottle) End Sub

مثال FindAll

جد كل أكثر تعقيدًا بقليل. وثائق مايكروسوفت ل جد كل يشبه هذا:

خافت مثيل كقائمة مطابقة خافتة كما هو متوقع (من T) خافت returnValue كقائمة (من T) returnValue = مثيل. FindAll (المباراة)

يتضمن بناء الجملة هذا عنصرًا جديدًا ، المسند (من T). وفقًا لمايكروسوفت ، فإن هذا يمثل الطريقة "التي تحدد مجموعة من المعايير وتحدد ما إذا كان الكائن المحدد يفي بهذه المعايير. "وبعبارة أخرى ، يمكنك إنشاء أي رمز سيجد شيئًا في قائمة. قمت بتشفير بلدي المسند (من T) للعثور على أي شيء في "البيرة" الفئة.

بدلاً من استدعاء رمز التفويض لكل عنصر في القائمة ، جد كل إرجاع كامل القائمة (T) تحتوي فقط على التطابقات التي تنتج عن الخاص بك المسند (من T). والأمر متروك لك لتحديد كل من هذه الثانية القائمة (T) ونفعل شيئا معها. يضيف رمز بلدي فقط العناصر إلى ListBox.

FindAllButton_Click الفرعي الخاص (مرسل ByVal كنظام. كائن ، ByVal e كنظام. EventArgs) يعالج FindAllButton. انقر فوق قائمة النتائج. العناصر. مسح () قائمة النتائج. العناصر. إضافة (ResultList) قائمة النتائج. العناصر. أضف ("") قائمة فرعية خافتة كقائمة فرعية (زجاجة) = خزانة. FindAll (AddressOf findBeer) لكل r كزجاجة في القائمة الفرعية ResultList. العناصر. يضاف (_ ص. العلامة التجارية & "-" & _ r. الاسم & "-" & _ r. الفئة & "-" & _ r. Size) الوظيفة الفرعية التالية findBeer (ByVal b As Bottle) _ As Boolean If (b. Category = "Beer") ثم ترجع True Else إلى نهاية خاطئة إذا كانت دالة End

مثال الفرز

الطريقة الأخيرة التي تدرسها هذه المقالة هي فرز. مرة أخرى ، تستخدم Microsoft بعض المصطلحات التي قد لا تكون على دراية بها. في الواقع هناك أربعة حمولة زائدة مختلفة فرز طريقة:

  • فرز()
  • فرز (IComparer (T))
  • فرز (مقارنة (T))
  • فرز (Int32 ، Int32 ، IComparer (T))

يتيح لك ذلك استخدام طرق الفرز المحددة في .NET Framework للقائمة ، وتشفيرها بنفسك ، واستخدام نظام مقارنة محددة للنوع ، أو فرز جزء من المجموعة باستخدام موضع البدء والعد معامل.

في هذا المثال ، بما أنني أستخدم بناء الجملة التالي لإجراء الفرز بالفعل ، فأنا أستخدم التحميل الزائد الثالث.

س. الاسم x اسم. قارن إلى (ص. الاسم) (ذ. اسم)

لقد قمت بتشفير مندوب آخر إلى مقارنتي. لأنني أريد أن فرز حسب بلدي اسم، أنا فقط سحب تلك القيمة من كل مثيل من زجاجة الكائن الذي تم تمريره واستخدام فرز (مقارنة )>)). ال فرز في الواقع يعيد ترتيب الأصلي القائمة (T). هذا ما تتم معالجته بعد تنفيذ الطريقة.

نوع فرعي فرعي خاص Click_Button (مرسل ByVal كنظام. كائن ، ByVal e كنظام. EventArgs) يعالج SortButton. انقر فوق قائمة النتائج. العناصر. مسح () قائمة النتائج. العناصر. أضف (ResultList) قائمة نتائج. العناصر. أضف خزانة (""). فرز (العنوان من فرز الخزانة) لكل r كزجاجة في قائمة نتائج الخزانة. العناصر. يضاف (_ ص. الاسم & "-" & _ r. العلامة التجارية & "-" & _ r. الفئة & "-" & _ r. الحجم) التالي نهاية فرعية خاصة وظيفة مشتركة sortC cabinet (_ ByVal × كزجاجة ، ByVal y كزجاجة) كعدد صحيح x. اسم. قارن إلى (ص. الاسم) دالة النهاية

تم اختيار هذه الطرق لتوضيح الطرق الرئيسية التي تستخدمها طرق الإطار القائمة (T) يتم ترميزها بالفعل. هناك مجموعة كاملة من الطرق الأخرى. هذا ما يصنع القائمة (T) مفيدة جدا!

instagram story viewer