Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C_theory_Ris_1g__Zachita.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
666.83 Кб
Скачать

16. Тісті массивтер. Array класы.

Тісті массивтер. Екіөлшемді массив тікбұрышты формада болады. Тісті массив өлшеміне қарағанда майысып тұрады. Мұндай массивтерде әрбір жол өлшемдері өзгеше болуы мүмкін. Төмендегі мысалда 3х3 екіөлшемді массиві мен 1жол 2элементтен, 2жол 6, 3жол 3элементтен тұратын тісті массив көрсетілген.

Тісті массивтерді инициализациялау кезінде бірінші тік жақшада жолдар санын анықтайтын өлшем көрсетіледі. Жолдағы элемент/ санын анықтайтын екінші тік жақша бос қалдырылады, себебі олардың элементтерінің саны әртүрлі болуы мүмкін. Мысалы,

Int [] [] jagged = new int [3] [];

jagged [0] = new int [2] {1, 2};

jagged [1] = new int [6] {3, 4, 5, 6, 7, 8};

jagged [2] = new int [3] {9, 10, 11};

Array класы. Массивтерді құруға, өзгертуге, іздеуге және сұрыптауға арналған әдістерді береді, яғни CLR ортасында барлық массивтерге базалық класс ролінде қызмет атқарады.

Мұралау иерархиясы

System.Object    System.Array

Синтаксисі

[SerializableAttribute]

[ComVisibleAttribute(true)]

public abstract class Array : ICloneable,

IList, ICollection, IEnumerable, IStructuralComparable, IstructuralEquatable

Array класы массивтермен жұмыс жасайтындарға ғана базалық болып табылады. Array класынан тек қана жүйе мен компиляьор мұралай алады. Қолданушылар программалау тілі ұсынатын массив конструкцияларын қолдануы керек.

//Класс Array 

int[ ] ar1 = new int[5]; 

double[ ] ar2 ={5.5, 6.6, 7.7}; 

int[ , ] ar3 = new Int32[3,4];

Массиві бар барлық класстар System.Array класының мұрагерлері болып табылады. System.Array класы бірқатар интерфейстерді мұралайды: ICloneable, IList, ICollection, Enumerable, және класс олардың барлық қасиеттері мен әдістерін іске асыру қажет. Object класы мен көрсетіліп кеткен интерфейстердің қасиеттері мен әдістерінен басқа, өзінің де біршама қасиеттері мен әдістері бар.

17. Массивтер параметр ретінде. Тізім бойынша санау.

Массивтер параметр әдісімен беріле алады және әдістен шыға алады.Массивтің қайтарылуы үшін қайтару типі ретіне массивті шақыру жеткілікті.Ол GetPersons( ) әісінде былай көрсетілген:

Static Person[ ] GetPersons ( )

{

Return new Person [ ] {

New Person { FirstName=”Damon”, LastName=”Hill”},

New Person { FirstName=”Niki”, LastName=”Lauda”},

New Person { FirstName=”Ayrton”, LastName=”Senna”},

New Person { FirstName=”Graham”, LastName=”Hill”}

};

}

Массивтің берілуі үшін параметре шақырылады, DisplayPersons ( ):

Static void DispayPersons ( Person [ ] persons )

{

// …

Массивтің коварианттылығы

Массивтің коварианттылығы дегеніміз – бұл массивтің базалық тип ретінде шақырылуы және оның элементі болып туынды элементтер саналады.Мысал:

Static void DisplayArray ( object [ ] data )

{

// …

}

Массивтерің коварианттылығы сілтеме типтер үшін ғана мүмкін.

Сапалы параметрлер массивы

Массивті параметрдің сапасына қарай әдіске береді және әдістен қайтарады.Массивті қайтару үшін жариялау типіне массивті қайтару жеткілікті,келесіде көрсетілгендей GetPersons():

static Person[] GetPersons()

return new Person[] (

new Person ( FirstName=“Damon“, LastName="Hill“ ), new Person (FirstName=“Niki“, LastName=“Lauda“), new Person ( FirstName=“Ayrton", LastName=“Senna“ }, new Person ( FirstName="Graham", LastName="Hill" }

Массивті жіберу ,массивтің параметірде хабарлау әдісі DisplayPersons() :

static void DisplayPersons(Person[] persons)

Тізімдер

Foreach оператордың көмегімен итерацяны оның элементінің санының қажетінсіз коллекция элементімен орындауға болады. Loreach операторы нөмірлеуге қолданылады(enumerator).6.7 суретте Loreach шақырылған және коллекция арасындағы қарым қатынас көрсетілген.GetEnumerator()-дыңкөмегімен IEnume rable интерфейсі арқылы массив пен коллекция құрылады.

Интерфейс IEnumerator

To reach әдісі IEnumerator интерфейс әдістері үшін қадамның барлық элементтеріне қолданылады. Бұл интерфейстің толық нұсқасы IEnumerator <T> , IDisposable интерфейсінің жалғасы,сондықтан нөмірлеуші үшін көшірілген ресурстарды нөмірлеу үшін Dispose әдісін анықтайды.

Енді жиынтық және игерушілік операторы foreach итерациясынның мүмкіндіктерін қарастырамыз:

Public void HelloWorld()

{var helloCollection=new HelloCollection();

Foreach(string s in helloCollection)

{Console.WriteLine(s);

} }

Блоктағы итератор компилятор yield типін түсіндіреді,соңынан жылдам қосады,фрагменттегі кодтың қалай екенін көрсетеді.Yield типі шындығында IЕnumerator және IDisposable интерфейс әдістерінің құрылымы.Мысалда біз yield типінің ішкі классы Enuterator екенін көреміз.GetEnuterator әдісі кластарды құрады және yield типін қайтарады. Yield типінің ішінде уақытынша state итераторын анықтайды және әрқайсысын өзгертеді, MoveNext() әдісін шақырған кезімізде. MoveNext() Әдісімен итератордағы блоктың кодынның мағынасын орнатады және объектісінің құрлымын қайтарады,айқындамаға тәуелді болады.

Итерацияның түрлі әдістерін жиынтықта қолдану

Көлемді және шындық мысалды жоғарыда келтіргеніміздей yield операторы арқылы кластарды жеңіл әрі жиынтықтағы итерация әдісімен орындау оңайырақ. MusicTitles класы итерацияны GetEnumerator() әдісі арқылы шақырады, Reverse () әдісі болса қайтадан ретке келтіреді және Subset () әдісі көптік итерацияларға көмектеседі.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]