2. В цьому уроці ви:
взнаєте про масиви;
про рядки;
про використання аргументів командного рядка;
2
Andrey Gladky
KspDevelop@gmail.com
3. Масиви
Всі масиви в С# успадковані від класу System.Array, що, у
свою чергу, успадковується від класу System.Object
З огляду на те, що масиви – це тип посилання, тому для
подальшої роботи потрібно виділити пам’ять використовуючи
ключове слово new.
Масиви в C# поділяються на:
• Одновимірні
• Багатовимірні
• Вкладені (рвані)
Andrey Gladky
KspDevelop@gmail.co
m 3
4. Одновимірні масиви
Синтаксис оголошення одномірного масиву наступний:
<Тип елементів масиву>[] <ім'я масиву>;
Після виділення пам'яті ініціалізація елементів відбувається
наступним чином: значення всіх простих типів установлюються в «0»,
значення логічного типу – в false, посилання – в null.
4
Andrey Gladky
KspDevelop@gmail.co
m
5. Є також можливість проініціалізувати масив потрібними
значеннями при оголошенні:
Для проходу по масиві можна використати кожен із циклів
for, while, do-while, foreach.
5
Andrey Gladky
KspDevelop@gmail.c
om
6. Багатовимірні масиви
Синтаксис багатомірного масиву:
<Тип елементів масиву>[ , ,...] <ім'я масиву>;
Ініціалізація двомірного масиву при оголошенні:
Доступ до елементів двовимірного масиву здійснюється в
такий спосіб.
Виведення двовимірного масиву.
6
Andrey Gladky
KspDevelop@gmail.co
m
8. Вкладені масиви
Andrey Gladky
KspDevelop@gmail.co
m 8
Крім одномірних і багатомірних масивів C# також підтримує
вкладені (або «рвані» ) масиви.
Синтаксис оголошення такого масиву:
<Тип елементів масиву>[][] <ім'я масиву>;
Такий масив являє собою масив масивів. Тобто у кожному
під масиві масиву розташовується вектор.
10. Andrey Gladky
KspDevelop@gmail.com 10
Доступ до елементів такого масиву одержуємо в такий спосіб:
Приклад, де здійснюється заповнення масиву й виведення його
на екран:
11. Методи для роботи з масивами
11
Andrey Gladky
KspDevelop@gmail.com
Оскільки всі масиви успадковані від класу System.Array, то всі вони
мають багатий набір методів:
◦ GetLength повертає кількість елементів масиву по заданому виміру;
◦ GetLowerBound й GetUpperBound повертають відповідно нижню й верхню границі
масиву по заданому вимірі;
◦ CopyTo копіює всі елементи одного одномірного масиву в інший, починаючи із заданої
позиції;
◦ Clone робить поверхневе копіювання масиву. Копія повертається у вигляді масиву
System.Object[];
◦ Статичний метод BinarySearch робить бінарний пошук значення в масиві (у діапазоні
масиву);
◦ Статичний метод Clear очищає масив (діапазон масиву). При цьому елементи посилань
встановлюються в null, логічні в false, інші типи значень в «0»;
◦ Статичний метод IndexOf - повертає індекс першого входження шуканого елемента в
масиві (у діапазоні масиву), у випадку невдачі - повертає «-1». Пошук здійснюється від
початку масиву;
◦ Статичний метод LastIndexOf - повертає індекс першого входження шуканого
елемента в масиві (у діапазоні масиву). Пошук здійснюється з кінця масиву, у випадку
невдачі - повертає «-1»;
◦ Статичний метод Resize змінює розмір масиву;
◦ Статичний метод Reverse - реверсує масив (діапазон масиву);
◦ Статичний метод Sort - сортує масив (діапазон масиву).
12. Розширені методи
Метод Sum - підсумує елементи масиву;
Метод Average - підраховує середнє арифметичне елементів
масиву
Метод Contains - повертає істину, якщо заданий елемент
присутній в масиві.
Метод Max - повертає максимальний елемент масиву.
Метод Min - повертає мінімальний елемент масиву.
Властивості:
• Length - повертає довжину масиву
• Rank - повертає кількість вимірів масиву.
Andrey Gladky
KspDevelop@gmail.com 12
14. Використання foreach
Даний цикл зручний тим, що при роботі з масивами вам не
потрібно вводити змінні для пробіжки по масиві, враховувати
його довжину й стежити за збільшенням. foreach все це робить
сам. Єдине, що не дозволяє відмовитися від циклів for й while
на користь foreach - це те, що даний цикл працює в режимі
читання, і записати які-небудь дані в елемент масиву при
«пробіжці» буде неможливо.
При роботі з багатомірними масивами цикл foreach не
зовсім зручний, тому що він виведе елементи всіх вимірів в
один рядок.
Andrey Gladky
KspDevelop@gmail.com 14
16. Рядки
Незважаючи на такий простий спосіб створення рядка,
клас System.String має 8 конструкторів.
Andrey Gladky
KspDevelop@gmail.com 16
17. Операції з рядками
Властивість Length – повертає довжину рядка.
Метод CopyTo - копіює задану кількість символів у масив char
Методи Equals, Compare, CompareTo й оператор «==» –
використаються для порівняння рядків. Деякі методи
можуть приймати параметр типу StringComparison, що
задає спосіб порівняння. Наприклад, варіант
CurrentCultureIgnoreCase використається для порівняння
без врахування регістра. Метод Compare - статичний, тому
викликається з під класу. CompareTo як й в «С» варіанті
повертає ціле значення(«-1» - ліве слово менше правого, «0» -
слова рівні, «1» - ліве слово більше).
Методи StartsWith й EndsWith - перевіряють, починається
(закінчується) рядок заданим строковим літералом.
Andrey Gladky
KspDevelop@gmail.com 17
18. Метод IndexOf й LastIndexOf - повертає індекс
першого/останнього входження символу/підрядкау вихідному
рядку.
Методи IndexOfAny й LastIndexOfAny повертає індекс
першого/ останнього входження кожного з перерахованих
символів у вихідному рядку.
Медод SubString одержує підрядок з вхідного рядка.
Всі методи пошуку включають перевантажені версії для
пошуку в заданому діапазоні із заданим способом порівняння.
Andrey Gladky
KspDevelop@gmail.com 18
19. Andrey Gladky
KspDevelop@gmail.com 19
Метод Concat здійснює конкатенацію (склеювання) рядків.
Зручна альтернатива даному методу - операції «+» та «+=».
Методи ToLower й ToUpper - повертають рядок у нижньому й
верхньому регістрі відповідно.
Метод Replace заміняє всі входження символу/підрядка
на заданий символ/підрядок.
Метод Contains - перевіряє, чи входить заданий символ/
підрядок у вихідний рядок.
Метод Insert - вставляє підрядок в задану позицію
вихідного рядка.
Метод Remove - видаляє заданий діапазон вихідного рядка.
Методи PadLeft й PadRight доповнюють вихідний рядок
заданими символами ліворуч/праворуч. Якщо символ не
вказується, то доповнення відбувається символом пробілу.
Перший параметр указує на кількість символів у рядку, до
якого вона повинна бути доповнена.
20. Andrey Gladky
KspDevelop@gmail.com 20
Метод Split розріже рядок по заданих символах
роздільникам. Повертає масив рядків, що вийшли в результаті
нарізування. Щоб виключити з цього масиву пробільні рядки
- потрібно використати дану функцію з параметром
StringSplitOptions.RemoveEmptyEntries.
Статичний метод Join поєднує рядки заданого масиву в один і
чергує їх із зазначеним символом-роздільником.
Методи TrimLeft й TrimRight забирають пробільні (за
замовчуванням) і задані символи відповідно з початку й кінця
рядка. Метод Trim - робить теж саме по обидва боки рядка.
Статичний метод Format - дозволяє зручно сформувати рядок.
Перший параметр - це форматний рядок, що містить текст
виведений на екран. Якщо в цей рядок необхідно вставити
значення змінних, то місце вставки позначається індексом у
фігурних дужках, при необхідності, також там можна вказати
кількість символів, яку займає даний елемент та його
специфікатор формату. Самі ж данні указуються наступними
параметрами методу.
22. Форматований вивід
Специфікатори формату:
• «С» - для числових даних. Виводить символ місцевої валюти.
• «D» - для цілих даних. Виводить звичайне ціле число.
• «Е» - для числових даних. Виводить число в експонентній формі.
• «F» - для числових даних. Виводить число з фіксованою десятковою
крапкою.
• «G» - для числових даних. Виводить звичайне число.
• «N» - для числових даних. Виводить числа у форматі локальних
настроювань.
• «P» - для числових даних. Виводить числа із символом «%».
• «X» - для цілих даних. Виводить число в шістнадцятковому форматі.
Andrey Gladky
KspDevelop@gmail.com 22
String.Format(“Текст, що виводиться {індекс, розмір:специфікатор}",
дані);
24. Особливості використання рядків
Andrey Gladky
KspDevelop@gmail.com 24
При роботі з рядками потрібно враховувати той факт, що в C#
рядки незмінні. Тобто, неможливо внести в рядок будь-які
зміни не перебудувавши його.
25. Клас StringBuilder
Був придуманий для того, щоб уникнути втрат
продуктивності.
Методи класу StringBuilder:
• Метод Append - додає до вихідного рядка дані кожного з стандартних
типів.
• Метод AppendFormat - додає до вихідного рядка рядок, сформованй у
відповідності зі специфікаторами формату.
• Метод Insert - вставляє дані кожного зі стандартних типів в вихідний
рядок.
• Метод Remove - видаляє з вихідного рядка діапазон символів.
• Метод Replace - замінює символ/під рядок у вихідному рядку на
зазначений символ/під рядок.
• Метод CopyTo - копіює символи вихідного рядка в масив char
• Метод ToString - перетворює об'єкт StringBuilder в String.
Andrey Gladky
KspDevelop@gmail.co
m 25
26. Властивості StringBuilder
Властивість Length - повертає кількість символів, що
перебувають в рядку в цей момент.
Властивість Capacity - повертає або встановлює кількість
символів, що може бути поміщене в рядок без додаткового
виділення пам'яті.
Властивість MaxCapacity повертає максимальну місткість
рядка.
Andrey Gladky
KspDevelop@gmail.com 26
27. Використання аргументів командного рядка
Andrey Gladky
KspDevelop@gmail.com 27
Як й в інших мовах програмування, в C# програму можуть
передаватися параметри командного рядка. Прикладом такої
програми - це команда ping (як параметр виступає ip-адреса
комп'ютера, з яким ви хочете перевірити зв'язок).
Для роботи з параметрами командного рядка існує єдиний
параметр в функції main - args типу string[].
Для того, щоб з командним рядком було зручно працювати під час
налагодження - потрібні параметри можна ввести під час
проектування. Для цього потрібно зайти у властивості
проекту, й вибравши вкладку «Debug» увести необхідні
параметри у вікно «Command line arguments», що
проілюстровано на рисунку.