14.02.2017 Views

. Стиллмен, Дж. Грин - Изучаем C#, 2-е издание

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

прим<strong>е</strong>р сортировки<br />

%<br />

Способы copmupoßku<br />

Д ля ко л л <strong>е</strong> к ц и й сущ <strong>е</strong>ству<strong>е</strong>т сп <strong>е</strong> ц и а л ь н ы й в с т р о <strong>е</strong> н н ы й в .N E T<br />

F ra m e w o rk и н т<strong>е</strong> р ф <strong>е</strong> й с, п о зв о л я ю щ и й создать о тд <strong>е</strong> л ь н ы й класс для<br />

с о р т и р о в к и со ста в л я ю щ и х объ<strong>е</strong>кта L is t < T > . Р <strong>е</strong> а л и з у я и н т <strong>е</strong> р ф <strong>е</strong> й с<br />

IC o m p a r e r < T > , в ы объясня<strong>е</strong>т<strong>е</strong> к о л л <strong>е</strong> кц и и , ка ким способом н у ж н о<br />

уп о р я д о ч и ть <strong>е</strong><strong>е</strong> сод<strong>е</strong>рж им о<strong>е</strong>. Задача в ы п о л н я <strong>е</strong> тся ср<strong>е</strong>дствам и м <strong>е</strong>тода<br />

C om pare ( ) , к о т о р ы й б <strong>е</strong>р<strong>е</strong>т п а р ам <strong>е</strong>тры двух о б ъ <strong>е</strong> кто в х и у и возвращ<br />

а<strong>е</strong>т ц<strong>е</strong>ло<strong>е</strong> число. Е сли х м <strong>е</strong>ньш <strong>е</strong>, ч<strong>е</strong>м у, возвращ а<strong>е</strong>тся о тр и ц а ­<br />

т<strong>е</strong> л ьн о<strong>е</strong> число. В случа<strong>е</strong> и х рав<strong>е</strong>нства возвращ а<strong>е</strong>тся ноль. Н у а <strong>е</strong>сли<br />

X больш <strong>е</strong>, ч<strong>е</strong>м у, буд<strong>е</strong>т возвращ <strong>е</strong>но п о л о ж и т<strong>е</strong> л ь н о <strong>е</strong> чи сло.<br />

В о т п р и м <strong>е</strong> р о б ъ я вл<strong>е</strong>ния класса, ср а в н и ваю щ <strong>е</strong> го о б ъ <strong>е</strong> кты D u c k п о<br />

разм<strong>е</strong>ру. Д обавьт<strong>е</strong> э то т класс к сво<strong>е</strong>м у про<strong>е</strong>кту,<br />

з<br />

f r “ “<br />

сортиру<strong>е</strong>мых объ<strong>е</strong>ктов- Duck<br />

Способ сортировки<br />

зависит от способа<br />

р<strong>е</strong>ализации<br />

инт<strong>е</strong>рф<strong>е</strong>йса<br />

IComparer.<br />

\<br />

class DuckComparerBySize : IComparer<br />

{<br />

public int Compare (Виск'^хГвис^^^Т^<br />

{<br />

м <strong>е</strong> т о д<br />

ц<strong>е</strong>ло<strong>е</strong> им<strong>е</strong>ло<br />

Тип сравнива<strong>е</strong>мых<br />

знач<strong>е</strong>ний вс<strong>е</strong>гда буд<strong>е</strong>т<br />

совпадать.<br />

л<br />

О т рицат <strong>е</strong>льно<strong>е</strong> число означа<strong>е</strong>т,<br />

что X долж<strong>е</strong>н ст оят ь п<strong>е</strong>р<strong>е</strong>д у,<br />

т ак как х «м<strong>е</strong>ньил<strong>е</strong>, ч<strong>е</strong>м » у.<br />

p означа<strong>е</strong>т совпад<strong>е</strong>ни<strong>е</strong><br />

р « м <strong>е</strong> р о 6<br />

^ ^ с д о в а т ь зд<br />

до л ж <strong>е</strong>н<br />

У-<br />

Это м<strong>е</strong>тод вывода уток<br />

в вид<strong>е</strong> колл<strong>е</strong>кции List.<br />

p u b l i c s t a t i c v o id P rin tD u c k s(L ist< D u c k > du ck s)<br />

{<br />

fo r e a c h (Duck duck i n du ck s)<br />

C o n s o le .W r it e L in e (duck. S i z e . T o S t r i n g ()<br />

C o n s o le .W r it e L in e ( "Утки к он чи л и сь!" );<br />

Добавьт<strong>е</strong> м<strong>е</strong>тод PnntPucks<br />

в класс Program, чтобы<br />

об<strong>е</strong>сп<strong>е</strong>чить вывод данных.<br />

\<br />

Л Обновит<strong>е</strong> м<strong>е</strong>тод MainQ<br />

таким образом, чтобы<br />

он вызывался до и посл<strong>е</strong><br />

сортировки.<br />

+ "-дюймов " + d u c k .K in d .T o S t r in g O )<br />

360 глава 8<br />

Ф

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!