Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Использование оператора foreachСодержание книги
Поиск на нашем сайте
В C# также предусмотрен оператор foreach. Этот оператор обеспечивает простой и понятный способ выполнения итерации элементов в массиве. Например, следующий код создает массив numbers и осуществляет его итерацию с помощью оператора foreach:
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace LC_Console { class Program { static void Main() { int[] numbers = { 4, 5, 6, 1, 2, 3, -2, -1, 0 }; foreach (int i in numbers) { Console.Write("{0} ", i); } Console.WriteLine("\nДля продолжения нажмите любую клавишу...");; Console.ReadKey(); } } } /* Выведет: * 4 5 6 1 2 3 -2 -1 0 * Для продолжение нажмите любую клавишу... */
Этот же метод можно использовать для итерации элементов в многомерных массивах, например:
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace LC_Console { class Program { static void Main() { int[,] numbers2D = new int[3, 2] { { 9, 99 }, { 3, 33 }, { 5, 55 } }; // Или // int[,] numbers2D = { { 9, 99 }, { 3, 33 }, { 5, 55 } }; foreach (int i in numbers2D) { System.Console.Write("{0} ", i); } Console.WriteLine("\nДля продолжения нажмите любую клавишу...");; Console.ReadKey(); } } } /* Выведет: * 9 99 3 33 5 55 * Для продолжение нажмите любую клавишу... */
Однако для лучшего контроля элементов в многомерных массивах можно использовать вложенный цикл for. Виды массивов Виды массивов
Одномерный массив
Можно объявить массив из пяти целых чисел с одним измерением, как показано в следующем примере:
int[] array = new int[5];
Массив содержит элементы с array[0] по array[4]. Оператор new служит для создания массива и инициализации элементов массива со значениями по умолчанию. В данном примере элементы массива инициализируются значением 0.
Массив, в котором хранятся строковые элементы, можно объявить таким же образом. Пример:
string[] stringArray = new string[6];
Массив можно инициализировать при объявлении. В этом случае спецификация ранга не нужна, поскольку она уже предоставлена по числу элементов в списке инициализации. Пример:
int[] array1 = new int[] { 1, 3, 5, 7, 9 };
Строковый массив можно инициализировать таким же образом. Ниже приведено объявление строкового массива, в котором каждый элемент инициализируется названием дня:
string[] weekDays = new string[] { "Пн.", "Вт.", "Ср.", "Чт.", "Пт.", "Суб.", "Вск." };
При инициализации массива при объявлении можно использовать следующий синтаксис:
int[] array1 = { 1, 3, 5, 7, 9 }; string[] weekDays = { "Пн.", "Вт.", "Ср.", "Чт.", "Пт.", "Суб.", "Вск." };
Можно объявить переменную массива без инициализации, но при присвоении массива этой переменной нужно использовать оператор new. Пример:
int[] array3; array3 = new int[] { 1, 3, 5, 7, 9 }; // OK //array3 = {1, 3, 5, 7, 9}; // Так нельзя
Передача одномерных массивов в качестве аргументов
Массивы можно передавать в качестве аргументов для параметров методов. Поскольку массивы являются ссылочными типами, метод может изменять значение элементов.
Инициализированный одномерный массив можно передать в метод. Например, следующая инструкция передает массив в метод Print:
int[] theArray = { 1, 3, 5, 7, 9 }; PrintArray(theArray);
В следующем примере кода показана частичная реализация метода Print:
void PrintArray(int[] arr) { // Код метода }
Инициализацию и передачу нового массива можно выполнить в рамках одного шага, как показано в следующем примере:
PrintArray(new int[] { 1, 3, 5, 7, 9 });
Массивы типов значений и ссылочных типов
Рассмотрим код:
SomeType[] array4 = new SomeType[10];
Результат этого оператора зависит от того, является ли SomeType типом значения или ссылочным типом. Если это тип значения, оператор создаёт массив из 10 элементов типа SomeType. Если SomeType — ссылочный тип, оператор создаёт массив из 10 элементов, каждый из которых инициализируется нулевой ссылкой.
Многомерный массив
Массивы могут иметь несколько измерений. Например, следующее объявление создаёт двумерный массив из четырех строк и двух столбцов:
int[,] array = new int[4, 2];
Следующее объявление создает трехмерный массив с количеством элементов 4, 2 и 3:
int[,,] array1 = new int[4, 2, 3];
Массив можно инициализировать при объявлении, как показано в следующем примере:
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace LC_Console { class Program { static void Main() { int[,] array2D = new int[,] { { 4, 8 }, { 15, 16 }, { 23, 42 }, { 7, 8 } }; // Два элемента (матрица 4 на 2) int[,] array2Da = new int[4, 2] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } }; // Явно указанное число элементов (матрица 4 на 2) string[,] array2Db = new string[3, 2] { { "один", "два" }, { "три", "четыре" }, { "пять", "шесть" } }; // Строковые элементы int[,,] array3D = new int[,,] { { { 1, 2, 3 }, { 4, 5, 6 } }, { { 7, 8, 9 }, { 10, 11, 12 } } }; // Многомерный массив (матрица 2 на (2 на 3)) int[,,] array3Da = new int[2, 2, 3] { { { 1, 2, 3 }, { 4, 5, 6 } }, { { 7, 8, 9 }, { 10, 11, 12 } } }; // Явно указанное число элементов (матрица 2 на (2 на 3)) // Выводим элементы масивов Console.WriteLine(array2D[0, 0]); Console.WriteLine(array2D[0, 1]); Console.WriteLine(array2D[1, 0]); Console.WriteLine(array2D[1, 1]); Console.WriteLine(array2D[3, 0]); Console.WriteLine(array2Db[1, 0]); Console.WriteLine(array3Da[1, 0, 1]); Console.WriteLine(array3D[1, 1, 2]); Console.WriteLine("\nДля продолжения нажмите любую клавишу..."); Console.ReadKey(); } } } /* Выведет: * 4 * 2 * 3 * 4 * 7 * три * 8 * 12 * Для продолжение нажмите любую клавишу... */
Можно также инициализировать массив, не указывая его размерность:
int[,] array4 = { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
Если нужно создать переменную массива без инициализации, то необходимо использовать оператор new, чтобы присвоить массив переменной. В следующем примере показано использование new:
int[,] array5; array5 = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } }; // OK //array5 = {{1,2}, {3,4}, {5,6}, {7,8}}; // Ошибка!
Следующий пример присваивает значение конкретному элементу массива:
array5[2, 1] = 25;
Аналогичным образом, в следующем примере получено значение конкретного элемента массива и оно назначено переменной elementValue:
int elementValue = array5[2, 1];
В следующем примере кода элементы массивов инициализируются значениями по умолчанию (за исключением массивов массивов):
int[,] array6 = new int[10, 10];
Рассмотрим ещё один пример многомерных массивов:
using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace LC_Console { class Program { static void Main(string[] args) { // Объявляем двумерный массив int[,] myArr = new int[4, 5]; Random ran = new Random(); // Инициализируем данный массив for (int i = 0; i < 4; i++) { for (int j = 0; j < 5; j++) { myArr[i, j] = ran.Next(1, 15); Console.Write("{0}\t", myArr[i, j]); } Console.WriteLine(); } Console.WriteLine("Для продолжения нажмите любую клавишу..."); Console.ReadKey(); } } } /* Выведет: * 13 10 3 7 11 * 7 12 11 11 8 * 13 6 12 13 2 * 13 5 11 6 2 * Для продолжения нажмите любую клавишу... */
Обратим особое внимание на способ объявления двумерного массива. Схематическое представление массива myArr показано ниже:
Рис. 4. 1. Доступ к элементу массива myArr[2,3]
Если читателю учебного курса уже приходилось раньше программировать на С, С++ или Java, то будьте особенно внимательны, объявляя или организуя доступ к многомерным массивам в С#. В этих языках программирования размеры массива и индексы указываются в отдельных квадратных скобках, тогда как в С# они разделяются запятой.
|
||
|
Последнее изменение этой страницы: 2016-12-28; просмотров: 387; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.196 (0.011 с.) |