ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Foreach (int n in array1)Приклади Двовимірний масив:
int[,] k = new int [2,3];
Тут пара квадратних дужок тільки одна. У нашому прикладі в масиві 6 (=2x3) елементів (k[0,0] - перший, k[1,2] - останній). Аналогічно можна задавати багатовимірні масиви. Тривимірний масив:
int[,, ]k = new int [10,10,10];
Варіант ініціалізації багатовимірного масиву:
int[ ] k = {{2,-2},{3,-22},{0,4}};
2.1.4. Масиви масивів Ще одним видом масивів С# є масиви масивів, називані також порізаними масивами (jagged arrays). Такий масив масивів можна розглядати як одновимірний масив, елементи якого є масивами, елементи яких, у свою чергу, знову можуть бути масивами, і так може тривати до деякого рівня вкладеності. Ці масиви можуть застосовуватися для подання дерев, у яких вузли можуть мати довільне число нащадків. Таким може бути, наприклад, генеалогічне дерево. Вершини першого рівня - Fathers, що представляють батьків, можуть задаватися одновимірним масивом, так що Fathers[i] - це i-й батько. Вершини другого рівня представляються масивом масивів - Children, так що Children[i] - це масив дітей і-го батька, а Children[i][j] – це j-та дитина i-го батька. Для подання онуків знадобиться третій рівень, так що Grandchildren [i][j][k] буде представляти k-го онука j-ї дитини і-го батька. Є деякі особливості в оголошенні й ініціалізації таких масивів. Якщо при оголошенні типу багатовимірних масивів для вказівки розмірності використовувалися коми, то для порізаних масивів застосовується більш ясна символіка - сукупності пар квадратних дужок; наприклад, int [ ][ ] задає масив, елементи якого - одновимірні масиви елементів типу int. Складніше зі створенням самих масивів й їх ініціалізацією. Тут не можна викликати конструктор new int[3][5], оскільки він не задає порізаний масив. Фактично потрібно викликати конструктор для кожного масиву на самому нижньому рівні. У цьому й полягає складність оголошення таких масивів. Приклад // масив масивів. Оголошення й ініціалізація int[ ][ ] jagger = new int[3][ ] { new int[ ] = {5,7,9,11}, new int[ ] = {2,8}, new int[ ] = {6,12,4} }
Масив jagger мас всього два рівні. Можна вважати, що в нього три елементи, кожний з яких є масивом. Для кожного такого масиву необхідно викликати конструктор new, щоб створити внутрішній масив. У даному прикладі елементи внутрішніх масивів одержують значення, будучи явно ініціалізовані константними масивами. Звичайно, припустиме й таке оголошення:
int[ ][ ] jaggerl = new int[3][ ] { new int[4], new int[2], new int[3] }
У цьому випадку елементи масиву одержать при ініціалізації нульові значення. Реальну ініціалізацію потрібно буде виконувати програмним шляхом. У конструкторі верхнього рівня константу 3 можна опустити й писати просто new int[][]. Виклик цього конструктора можна взагалі опустити – він буде матися на увазі:
int[][] jagger2 = { new int[4], new int[2], new int[3] }:
Конструктори нижнього рівня необхідні. Ще одне зауваження – динамічні масиви можливі й тут. У загальному випадку, фаті ці на будь-якому рівні можуть бути виразами, що залежать від змінних. Більше того, припустимо, щоб масиви на нижньому рівні були багатовимірними.
Приклад // Оголошуємо двовимірний східчастий масив int[][] k = newint [2][]; // Оголошуємо 0-й елемент східчастого масиву. // Це знову масив і у ньому 3 елементи k[0]=new int[3]; // Оголошуємо 1-й елемент східчастого масиву. // Це знову масив і у ньому 4 елементи k[1]=new int[4]; k[1] [3]=22; // записуємо 22 в останній елемент масиву … Зверніть увагу, що у східчастих масивів задається декілька пар квадратних дужок (стільки, скільки становить розмірність у масиву).
2.2. Цикл foreach Новим видом циклу, що часто використовується й досить зручний при роботі з масивами, е цикл foreach. Його синтаксис:
foreach (тип ідентифікатор іn контейнер) оператор
Тіло циклу виконується для кожного елемента масиву й закінчується, коли повністю перебрані всі елементи. Тип ідентифікатора повинен бути узгоджений з типом елементів, що зберігаються в масиві даних. Передбачається також, що елементи масиву впорядковані. На кожному кроці циклу ідентифікатор, що задає поточний елемент масиву, одержує значення чергового елемента відповідно до порядку, установленого на елементах масиву. Із цим поточним елементом і виконується тіло циклу -виконується стільки разів, скільки елементів знаходиться в масиві. Недоліком циклів foreach у мові С# є те, що цикл працює тільки на читання, але не на запис елементів. Тому наповнювати масив елементами доводиться за допомогою інших операторів циклу. Приклад використання циклу foreach:
Class Program { static void Main(string[] args) { int[,] array1 = {0, 2, 4, 6, 8, 10); foreach (int n in array1) { Не нашли, что искали? Воспользуйтесь поиском:
|