TOC

This article has been localized into Russian by the community.

Коллекции:

Массивы

Массивы работают как коллекции элементов, например, строк. С их помощью можно собирать элементы в одну группу и выполнять над ними различные операции, например, сортировку. Кроме того, несколько методов framework работают с массивами, чтобы можно было принимать набор элементов, а не один. Сам по себе этот факт позволяет немного узнать о массивах.

Массив декларируется похоже на переменную, набором квадратных скобок после типа данных, как здесь:

string[] names;

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

string[] names = new string[2];

Число (2) это размер массива, который означает количество элементов, которое он может вмещать.

names[0] = "John Doe";

Но почему 0? Как и во многих вещах в мире программирования, подсчет начинается с 0 вместо 1. Итак, первый пункт-это индекс 0, следующая-1 и так далее. Об этом следует помнить при заполнении массива элементами, так как переполнение приведет к исключению. Когда вы смотрите на инициализатор, устанавливая размер массива равным 2, может показаться естественным поместить в него номер элемента 0, 1 и 2, но это слишком много. Если это сделать, будет выведено исключение. Мы обсудим исключения в следующей главе.

Ранее мы узнали о циклах, и, очевидно, они отлично сочетаются с массивами. Наиболее распространенным способом получения данных из массива является циклическое выполнение операций с каждым значением. Давайте используем предыдущий массив, чтобы сделать реальный пример:

using System;
using System.Collections;

namespace ConsoleApplication1
{
    class Program
    {
static void Main(string[] args)
{
    string[] names = new string[2];

    names[0] = "John Doe";
    names[1] = "Jane Doe";

    foreach(string s in names)
Console.WriteLine(s);

    Console.ReadLine();
}
    }
}

Мы используем цикл foreach, потому что он самый простой, но, конечно, мы могли бы использовать один из других типов цикла. Цикл for также хорош с массивами, например, если вам нужно подсчитать каждый элемент, например:

for(int i = 0; i < names.Length; i++)
    Console.WriteLine("Item number " + i + ": " + names[i]);

Это на самом деле очень просто. Мы используем свойство массива Length, чтобы решить, сколько раз цикл должен повторяться, затем мы используем счетчик (i) для вывода, где мы находимся в процессе, а также получить элемент из массива. Точно так же, как мы использовали число, так называемый индексатор, чтобы поместить элементы в массив, мы можем использовать его, чтобы снова получить определенный элемент.

Я говорил вам ранее, что мы можем использовать массив для сортировки диапазона значений, и это на самом деле очень просто. Класс Array содержит набор интеллектуальных методов для работы с массивами. В этом примере вместо строк будут использоваться числа, чтобы попробовать что-то другое, но это могут быть и строки. Я хочу показать вам другой способ заполнения массива, который намного проще, если у вас есть небольшой, предопределенный набор элементов, которые вы хотите поместить в свой массив. Взгляните:

int[] numbers = new int[5] { 4, 3, 8, 0, 5 };

Одной строкой мы создали массив размером 5 и заполнили его 5 целыми числами. Заполняя массив подобным образом, вы получаете дополнительное преимущество, так как компилятор проверит и удостоверится, что вы не помещаете слишком много элементов в массив. Попробуйте добавить еще число - вы увидите, что компилятор возражает.

На самом деле, это можно сделать еще короче, вот так:

int[] numbers = { 4, 3, 8, 0, 5 };

Это коротко, и вам не нужно указывать размер. Хотя первый подход может быть легче читать позже.

Давайте попробуем отсортировать массив - вот полный пример:

using System;
using System.Collections;

namespace ConsoleApplication1
{
    class Program
    {
static void Main(string[] args)
{
    int[] numbers = { 4, 3, 8, 0, 5 };

    Array.Sort(numbers);

    foreach(int i in numbers)
Console.WriteLine(i);

    Console.ReadLine();
}
    }
}

Единственная реальная новая вещь здесь - оператор Array.Sort. Он может принимать различные параметры, для различных видов сортировки, но в данном случае это просто наш массив. Как видно из результата, наш массив отсортирован. Класс Array также имеет другие методы, например, метод Reverse (). Вы можете посмотреть его в документации, чтобы увидеть все возможности класса Array.

Массивы, которые мы использовали до сих пор, имели только одно измерение. Однако, массивы C# могут быть многомерными, иногда называются массивы в массивах. Многомерные массивы поставляются в C# в двух вариантах: прямоугольные массивы и неровные массивы. Разница в том, что с прямоугольными массивами все размеры должны быть одного размера, отсюда и название "прямоугольные". Ступенчатый массив может иметь различные размеры. Многомерные массивы являются трудным предметом и выходят за рамки этого учебника.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!