Корисна генеричка листа у ВБ.НЕТ-у

Генерички производи проширују снагу и флексибилност ВБ.НЕТ-а у многим областима, али ви добијате већу корист од перформанси и више опција програмирања у опћенито Листа објект [Листа (од Т)] него са било којим другим.

Користити Листа (од Т), морате да разумете како да примените многе методе које пружа .НЕТ Фрамеворк. Испод су три примера употребе За сваки, ФиндАлл, и Врста, то показује како генеричко Листа разредни радови.

Први корак је стварање генеричког Листа. Можете добити податке на много начина, али најједноставнији је то праведан Додати то. Шифра у наставку показује како да класификујем своју колекцију пива и вина!

Почетни код

Ту прво треба да буде предмет који ће представљати боцу из колекције. У апликацији Виндовс Формс класа обрасца прво мора бити у датотеци или дизајнер Висуал Студио неће радити исправно, па ставите то на крај:

Флаша јавне класе. Јавни бренд као гудач. Јавно име као стринг. Јавна категорија као низ. Јавна величина као децимална. Публиц Суб Нев (_. БиВал м_Бранд Ас Стринг, _. БиВал м_Наме Ас Стринг, _. БиВал м_категорија Ас Стринг, _. БиВал м_Сизе Ас Децимал) Бренд = м_Бранд. Име = м_Наме. Категорија = м_категорија. Величина = м_Величина. Енд Суб. Енд Цласс
instagram viewer

Да бисте направили колекцију, Додати ставке. То је оно што је у Учитавање обрасца догађај:

Димни ормар као списак (боце) = _. "Нова листа (боца) Кабинет. Додај (Нова боца (_. "Цастле Цреек", _. "Уинтах Бланц", _. "Вино", 750)) Кабинет. Додај (Нова боца (_. "Компанија за пивовару у Сиону", _. "Спрингдале Амбер Але", _. "Пиво", 355)) Кабинет. Додај (Нова боца (_. "Шпански виногради", _. "Сирах", _. "Вино", 750)) Кабинет. Додај (Нова боца (_. "Васатцх пива", _. "Полигамни портер", _. "Пиво", 355)) Кабинет. Додај (Нова боца (_. "Пиво за чучањ", _. "Прово Гирл Пилснер", _. "Пиво", 355))

Сви горе наведени код је стандардни код у ВБ.НЕТ 1.0. Међутим, имајте на уму да дефинисањем свог Флаша објекта, добијате предности више типова у истој колекцији (у овом случају оба Низ и Децималан) и ефикасно откуцајте "касно везивање".

Пример за ФорЕацх

Забава почиње када користимо методе. За почетак, проведимо оно познато За сваки метод. Мицрософт документација укључује ову дефиницију синтаксе употребе:

Дим инстанца Ас Лист Дим акција као акција (Оф Т). ФорЕацх (акција)

Мицрософт даље дефинише поступак као "делегат на методу која изводи радњу на предмету који му је пренесен. Елементи тренутне листе (Т) појединачно се прослеђују делегату Ацтион (Т). "

Савет: Више о делегатима прочитајте Коришћење делегата у Висуал Басиц .НЕТ за флексибилност током рада.

Прво што требате да кодирате је метода која ће бити делегирана. Извор је неразумевања ове кључне тачке већина забуну студената ВБ.НЕТ-а. Ова функција или подпрограм је где се врши све прилагођено кодирање објеката типа „Оф“.

Када се правилно изведе, у суштини сте готови. То је заиста једноставно у овом првом примеру. Читава инстанца Флаша се подноси и подпрограм одабире све што је потребно из ње. Кодирање За сваки И сама је једноставна. Само испуните адресу делегата користећи АддрессОф метод.

ПодизгледБоттле (БиВал б као боца) РесултЛист. Предмети. Додај (_ б. Бренд & "-" & _ б. Име & "-" & _ б. Категорија & "-" & _ б. Величина) Крај Суб Приватни Суб ФорЕацхБуттон_Цлицк (... РесултЛист. Предмети. Цлеар () РесултЛист. Предмети. Додајте („За сваки пример“) РесултЛист. Предмети. Додајте ("") кабинет. ФорЕацх (АддрессОф дисплаиБоттле) Крај Суб

ФиндАлл Екампле

ФиндАлл је мало сложеније. Мицрософт документација за ФиндАлл изгледа овако:

Дим инстанца Као листа Дим се подудара са предикатом (од Т) Дим ретурнВалуе Ас Лист (Од Т) ретурнВалуе = инстанца. ФиндАлл (подударање)

Ова синтакса укључује нови елемент, Предикат (од Т). Према Мицрософту, ово ће представљати методу „која дефинише скуп критеријума и одређује да ли одређени објекат испуњава те критеријуме. "Другим речима, можете да креирате било који код који ће нешто пронаћи у листа. Ја сам кодирао своје Предикат (од Т) да нађемо било шта у "Пиву" Категорија.

Уместо да позовете делегатски код за сваку ставку на листи, ФиндАлл враћа целину Листа (Т) који садрже само подударности које су резултат вашег Предикат (од Т). На вашем коду је да обе дефинирате ову секунду Листа (Т) и урадите нешто с тим. Мој код само додаје ставке у Листа кутија.

Привате Суб ФиндАллБуттон_Цлицк (БиВал пошиљалац Ас Систем). Објект, БиВал е Ас Систем. ЕвентАргс) рукује ФиндАллБуттон. Кликните на РесултЛист. Предмети. Цлеар () РесултЛист. Предмети. Додајте („ФиндАлл Екампле“) РесултЛист. Предмети. Додајте ("") дим подпис као списак (боца) подлистка = кабинет. ФиндАлл (АддрессОф финдБеер) за сваки р Ас Боттле у подпису РесултЛист. Предмети. Додај (_ р. Бренд & "-" & _ р. Име & "-" & _ р. Категорија & "-" & _ р. Величина) Следећи крај Подфункција финдБеер (БиВал б као флаша) _ Као бооле Иф (б. Категорија = „Пиво“) Затим вратите Труе Елсе Ретурн Фалсе Енд ако заврши функцију

Пример сортирања

Коначни метод који овај чланак испитује је Врста. Мицрософт поново користи неку терминологију која можда није позната. Заправо постоје четири различита преоптерећења Врста метода:

  • Врста()
  • Поредај (ИЦомпарер (Т))
  • Поредај (поређење (Т))
  • Поредај (Инт32, Инт32, ИЦомпарер (Т))

Ово вам омогућава да користите методе сортирања дефиниране у .НЕТ Фрамеворк-у за листу, сами кодирате, користите систем дефинисано поређење за тип, или сортирање дела колекције користећи почетну позицију и бројање параметар.

У овом примеру, с обзиром да следећу синтаксу користим за стварно вршење сортирања, користим треће преоптерећење.

Икс. Наме.к. Име. Упоредите (и). Име) (и. Име)

Кодирао сам другог делегата свом упоређивачу. Пошто желим да сортирам по свом Име, Извлачим управо ту вредност из сваке инстанце Флаша објекта који се прослеђује и користи Поредај (Поређење )>)). Тхе Врста метода заправо преуређује оригинал Листа (Т). То је оно што се обрађује након извршења методе.

Привате Суб СортБуттон_Цлицк (БиВал пошиљалац Ас Систем). Објект, БиВал е Ас Систем. ЕвентАргс) Рукује СортБуттон. Кликните на РесултЛист. Предмети. Цлеар () РесултЛист. Предмети. Додај („Пример сортирања“) РесултЛист. Предмети. Додајте ("") кабинет. Поредај (АддрессОф сортЦабинет) за сваки р као боцу у кабинету РесултЛист. Предмети. Додај (_ р. Име & "-" & _ р. Бренд & "-" & _ р. Категорија & "-" & _ р. Величина) Следећи крај Под приватна дељена функција врстаКабинет (_ БиВал к као боца, БиВал и као флаша) као целокупни повратак к. Име. Упоредите (и). Име) Крајња функција

Ове методе су изабране да прикажу главне начине на које се односе методе Оквира Листа (Т) су заправо кодирани. Међутим, постоји читав низ других метода. То је оно што чини Листа (Т) тако корисно!

instagram story viewer