Добавил:
2200 7008 9480 6099 TKFF БЛАГОДАРНОСТЬ МОЖНО ТУТ ОСТАВИТЬ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДИПЛОМ 2025 / 4 курса_МТУСИ / 1 КУРС / Информатика / С# для чайников - Мюллер.pdf
Скачиваний:
0
Добавлен:
04.06.2025
Размер:
53.3 Mб
Скачать

Инициализаторы массивов и коллекций

В этом разделе речь пойдет о ций - в старом и в новом стилях бы потом к ней вернуться.

методах инициализации . Можете загнуть уголок

массивов и коллек­ этой страницы, что­

б г дeдитдзиeдоtжиrrдкл кt

Напомню, что синтаксис var, рассматривавшийся в этой главе ранее, позволяет объявлять массивы следующим образом :

=

ЗАПОМНИ!

=A=H======H=STE====H==T

Традиционный способ инициализации коллекции, такой как Lis t <T> (или Queue<T> или Stack<T>), во времена С# 2.0 выглядел следующим образом :

ки =

)

Если у вас есть эти числа в другой коллекции или массиве, можно посту­ пить немного по-другому:

ки

=

 

=

Нач иная с С# 3.0 инициализаторы коллекций напоминают инициали­ заторы массивов и существенно проще в использовании, чем более

ранние способы. Новые инициализаторы имеют следующий вид:

ЗАПОМНИ!

ки

о

л

0n O n h

П,,

= {

Ключевое различие между новыми инициализаторами массивов и коллек­ ций состоит в том, что для коллекций обязательно нужно указы вать тип дан­ ных, т.е. после ключевого слова new следует указывать List<int>.

В ы можете использовать новое ключевое слово var и с коллекциями:

=

=

= =

=

ЗАПОМНИ!

=

= =

=

ГЛАВА 6 ьяеле кяя уояя.уМа он.оол

163

Можно также использовать новое ключевое слово ,.агн

яs

=

=

= = =

==

=

Инициализация словарей с использованием нового синтаксиса почти та­ кая же:

:

 

 

 

:

U :

е

е :

 

­ :

е

д

В нешне все выглядит так же,

как и для зама l'Мй но внутри внешних фи­

гурных скобок имеется второй уровень скобок, по паре скобок для каждого элемента словаря. Поскольку данный словарь раяа имеет целые ключи и стро­ ковые значения, каждая внутренняя пара фигурных скобок содержит число и строку, разделенные запятыми. Пары "ключ-значение" также разделены запя­ тыми.

Инициализация множеств (о которых я расскажу в следующем разделе) очень похожа на инициализацию списков:

i о m 1­:Ог :­ о m 1О: г l :Огл: а i

Использование множ.еств

В С# 3 .0 добавлен новый тип коллекции - uемтгосl'м, f+2ь еlй гидед (set) представляет собой неупорядоченную коллекцию неповторяющихся элемен­ тов. Концепция множества происходит из математики. В качестве примеров множеств можно привести множество дней недели, учеников в классе, целых чисел и т.п. В отличие от математических множеств множества С# не могут быть бесконечными, но их размер ограничен только доступной памятью. В по­ следующих разделах будет рассказано, как работать с м ножествами в своих программах.

Выполнение специфичных для множеств задач

 

Так же,

как и в случае с другими коллекциями, вы можете добавлять эле­

менты в множество, удалять их или искать. Но можно выполнять и некоторые

специфичные для множества операции, такие как еВ4йoоьйьойд и )йeйий ,йьойд

множествх l 6

l

4p,6A

D . c.4 .,aa-AcD c4..4 p64 ,a - .a,6.,a,S .A p6Dc, 6­ p4 A 6,a

таатм s iiеее # ткиое оаэаз .яижкм о gяидiятета ок - i -бЧ)г,моавиток есниам Птттu

lrp

-

l-дчеозч ои обин ттви о з нев o rB -c;>

>>Объединение: сливает элементы двух множеств в одно.

»Пересечение: находит элементы, которые имеются одновременно в

обоих множествах, и возвращает новое множество, состоящее толь­ ко из этих элементов.

»Разность: определяет, какие элементы одного множества отсутству­

ют в другом.

Когда следует использовать uчмтопв­rdЦ В любое время, когда вы работаете с двумя или более коллекциями и хотите найти, например, их пересечение (или создать коллекцию, которая содержит две другие коллекции, или исключ ить группу элементов из коллекции). Многие методы uч мтопв­гd могут связывать множества и другие классы коллекций. Конечно, множества способны на боль­ шее, так что поищите термин чмт пвгd­ в справочной системе по языку про­ граммирования С#.

Создание множества

Для создания объекта типа Счмтопв­rd можно выполнить следующие дей­ ствия:

ь г

(­ьэ

,ь О г э

Более удобно воспользоваться инициализатором коллекции:

=

Можно также создать м ножество из существующей коллекции наподобие списка или из массива:

=

=

Добавление элемента в множество

Если вы попытаетесь добавить элемент в м ножество, в котором этот эле­ мент уже имеется fмдчъ ъ . ксдп t плм # урр ( 2 ) ; ), то, с одной стороны, это не будет воспринято как ошибка, но с другой - само м ножество при этом не изменится (так как в множестве не может быть дубликатов). Метод урр б эвер­ нет вл жпщесли добавление выполнено, и Сч0мпЯ в противном случае. Вы не обязаны проверять возвращаемое значение, но оно может оказаться полезным,

если вы захотите выполнить какие-то действия в случае добавления в множе­ ство дубликата уже содержащегося в нем элемента:

ГЛАВА 6 Глава для коллекционеров 165

Выполнение объединения

 

T..4"I" .."3

I.E"" T..3"."

 

I"3".>N...omp"N>e<.e<I3"N"I"4

к­

."

гN" r"E"" 4.П."

 

4."3

T"

МВ..".>T"EИВ"4..."

к­

 

 

 

 

 

 

 

 

 

 

 

 

 

 

к­ T"В4"

e<"N4TT"E

.e<NИ>N."з." 3.N"3. N.г"> ." "T"..

.. ."

"з" 4"В3"П.">NИ 3r...."4.NИ

 

"EE"

....щE.г.T3.

>T">"r.3.

T."I>N.4Ee<"N>e<3. ">"r".."

ompI"rК."

 

".4TК ь..з3".N

эN"з" "I...г..."N>e<

>" >T.>

.

­

. ­3.>

>.4.

.ПITК .В

..е

>"I".П.N

..В4...e<

4"N"4ч

>E. 4T "r

"I...N" .е

T..

T"3"

. T.">N"

" 4TВ"4. 3"N"I. >T.>

.

 

к..T..3".

ч

 

 

 

кк

 

 

N" T"Eompг"..TК4 ."ВompEИN.>TN".>"

rompI"N.3"NИ

IomprE. .NTк

 

 

 

>T"Eк ИВompe<П"

к­

. 3"N"I

 

­

3"П."

"r

"I...NИ I4"

"EE"

 

... ompI.E.N4>"И

IomprE. ."INT..3

 

I"К>N4."3

 

. T"

.В.." 4>E"IompУ

T"3..3"."

 

 

 

 

 

 

 

 

 

 

 

a

 

 

 

 

 

 

 

N

 

 

 

 

 

 

=

=

= =

 

 

= =

=

 

 

 

 

 

=

= = =

= =

= =

= =

 

=

 

 

 

=

s

*(=====(=(-= =(==E((--)(=(5=-(

v(=(*(( 5(=(*=)=m

(-()==

S

{ S S

s

SS{ t

)

 

s

Sr(=(*l-(- m=( 5=)5(v

пs

s )5=(====(=5====)))

)(=)=( ))

)(-(G(

-)(=(5=-(

rS

l

(-=(*(-m=(=(-===-((=5=-(=(=-)(=(5=-(

{

s

v(=(*==r =(=(-

=(=

v-)(=(5=-=-(55)-

sS

s

s)( m(v=)E(5v)=(=(-

=(==(==v m=(-()==

-(55)-( v(=(*=E

( )(= - -)(=(5=-(

v()

(

)

(--)(=(5=-( 5(=(*=)=

-5(

-(=(tv( (*=()-(==5=-(=()E )5E(=)=E-)(=(5=-(El

 

 

166

11

21

32

4 21

314

13

Соседние файлы в папке Информатика