. Стиллмен, Дж. Грин - Изучаем 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.
*<br />
п<strong>е</strong>р<strong>е</strong>числ<strong>е</strong>ния и колл<strong>е</strong>кции<br />
и н т <strong>е</strong> р ф <strong>е</strong> й с IC o m p a r a b le < D ( ie k ><br />
М <strong>е</strong> то д L i s t . S o r t О ум<strong>е</strong><strong>е</strong>т со р ти р о в а ть о б ъ <strong>е</strong> кты л ю б о го т и п а и классы ,<br />
к о то р ы <strong>е</strong> р <strong>е</strong> а л и з у ю т и н т <strong>е</strong> р ф <strong>е</strong> й с 1 С о т р а г а Ы <strong>е</strong> < Т > . В состав<strong>е</strong> э т о го и н т <strong>е</strong> р <br />
ф <strong>е</strong>йса н а хо д и тся то л ь ко м <strong>е</strong>тод С о т р а г<strong>е</strong> Т о { ) . S o r t ( ) , к о т о р ы й использу<strong>е</strong>т<br />
м <strong>е</strong>тод С о т р а г<strong>е</strong> Т о () объ<strong>е</strong>кта для ср а в н <strong>е</strong> н и я с д р уги м и объ<strong>е</strong>ктам и. В озвращ<br />
а<strong>е</strong>мо<strong>е</strong> знач<strong>е</strong>ни<strong>е</strong> (т и п а in t) показы ва<strong>е</strong>т, к то д о л ж <strong>е</strong> н б ы ть п<strong>е</strong>рвы м .<br />
Для ко л л <strong>е</strong> кц и й объ<strong>е</strong>ктов, ко то р ы <strong>е</strong> н<strong>е</strong> р<strong>е</strong>ализую т и н т<strong>е</strong>рф <strong>е</strong>йс IC o m p a -<br />
г а Ы <strong>е</strong> < Т > , в .N E T им <strong>е</strong><strong>е</strong>тся д руго й способ. М <strong>е</strong>тод S o r t () м о ж н о п<strong>е</strong>р<strong>е</strong>дать экз<strong>е</strong>мпляру<br />
класса, р<strong>е</strong>ализую щ <strong>е</strong>го IC o m p a re r< T > . Э то т инт<strong>е</strong>рф <strong>е</strong>йс то ж <strong>е</strong> им <strong>е</strong><strong>е</strong>т<br />
вс<strong>е</strong>го один м<strong>е</strong>тод и позволя<strong>е</strong>т задавать сп<strong>е</strong>циальны <strong>е</strong> способы со р ти р о вки.<br />
М<strong>е</strong>тод Сотраг<strong>е</strong>ТоО сраВниба<strong>е</strong>т два объ<strong>е</strong>кта<br />
М о ж н о о тр <strong>е</strong> д а кти р о в а ть класс D u c k та ки м образом , ч т о б ы о н начал р<strong>е</strong>ализо<br />
в ы вать и н т<strong>е</strong> р ф <strong>е</strong> й с IC o m p a ra b le < D u c k > . Д ля э то го добавим м <strong>е</strong>тод<br />
С о т р а г<strong>е</strong> Т о ( ) , и сп о л ь зую щ и й ссы лку на объ<strong>е</strong>кт D u c k в кач<strong>е</strong>ств<strong>е</strong> парам<strong>е</strong>тра.<br />
Е сли утка, взятая для сравн<strong>е</strong>ния, д о л ж н а оказаться посл<strong>е</strong> анализиру<strong>е</strong>м<br />
ой у тк и , м<strong>е</strong>тод С о т р а г<strong>е</strong> Т о {) возвращ а<strong>е</strong>т п о л о ж и т<strong>е</strong> л ь н о <strong>е</strong> число.<br />
Любой класс<br />
мож<strong>е</strong>т работать<br />
со встро<strong>е</strong>нным<br />
м<strong>е</strong>тодом<br />
Sort ( ) объ<strong>е</strong>кта<br />
List с помощью<br />
IComparable<br />
и Сотраг<strong>е</strong>То().<br />
О б н о в и т<strong>е</strong> класс D u c k пут<strong>е</strong>м р <strong>е</strong> ализа ц ии и н т<strong>е</strong> р ф <strong>е</strong> й са IC o m p a ra b le < D u c k > ,<br />
ч т о б ы о т с о р т и р о в а ть у т о к п о разм<strong>е</strong>ру:<br />
c l a s s D u c k : I C o m p a r a b l e < D u c k > {<br />
p u b l i c i n t S i z e ;<br />
p u b l i c K i n d O f D u c k K i n d ;<br />
Р<strong>е</strong>ализуя 1СомрагаЫ<strong>е</strong> J<br />
вы указыва<strong>е</strong>т<strong>е</strong> тип<br />
парам<strong>е</strong>тра, по которому<br />
осущ<strong>е</strong>ствля<strong>е</strong>тся сравн<strong>е</strong>ни<strong>е</strong>.<br />
Т а к в ы г л я д ^ ^ о л ь ^ p u b l i c i n t С о т р а г <strong>е</strong> Т о ( D u c k d u c k T o C o m p a r e ) {<br />
Г л т » а г <strong>е</strong> Т ^ ( ) - i f ( t h i s . S i z e > d u c k T o C o m p a r e . S i z e )<br />
знам<strong>е</strong>ния п о л <strong>е</strong> й S ^ e<br />
д вц х yvn oK . Е сли<br />
m к о т о р у ю с с ы л а <strong>е</strong> т <br />
ся с л о в о this ^o^fc-tue.<br />
-%■<br />
A 6 случа<strong>е</strong> совпад<strong>е</strong>ния<br />
р а з м <strong>е</strong> р о в - ноль. J<br />
}<br />
r e t u r n 1 ;<br />
e l s e i f ( t h i s . S i z e < d u c k T o C o m p a r e . S i z e )<br />
r e t u r n - 1 ;<br />
, Чтобы получить ряд от самой<br />
мал<strong>е</strong>нькой до самой большой<br />
r e t u r n О ;<br />
утки, м<strong>е</strong>тод CompareToQ долж<strong>е</strong>н<br />
возвращать положит<strong>е</strong>льно<strong>е</strong> число<br />
при сравн<strong>е</strong>нии с уткой м<strong>е</strong>ньш<strong>е</strong>го<br />
разм<strong>е</strong>ра.<br />
Д о б а в ь т <strong>е</strong> э т о т к о д в ко н <strong>е</strong> ц м <strong>е</strong>тода M a in { ) до вы зова м <strong>е</strong>тода C o n s o l e .<br />
R e a d K e y О , и ко л л <strong>е</strong> кц и я у то к буд<strong>е</strong>т о тс о р т и р о в а н а п о разм<strong>е</strong>ру. П о м <strong>е</strong> сти т<strong>е</strong><br />
т о ч к у о с т а н о в а в м<strong>е</strong>тод С о т р а г<strong>е</strong> Т о () и воспользуйт<strong>е</strong>сь отл адчи ком , ч т о <br />
бы п о н я ть , как вс<strong>е</strong> работа<strong>е</strong>т.<br />
d u c k s . S o r t ( ) ;<br />
дальш<strong>е</strong> > 359