Шаг 51.
Язык программирования C#. Начала
Массивы. Инициализация массива

    На этом шаге мы рассмотрим различные конструкции, используемые для инициализации массива.

    В рассмотренных в предыдущих шагах примерах мы сначала создавали массив, а затем его заполняли. При заполнении массивов у нас был определенный алгоритм, в соответствии с которым элементам присваивались значения. Например, массив можно заполнять нечетными числами, или случайными числами, или числами Фибоначчи. Но бывают ситуации, когда такой закономерности попросту нет. Элементам массива нужно присвоить значения, и эти значения нельзя (или нет смысла) записывать в виде формулы. Проще говоря, очень часто принципиально невозможно заполнить массив с использованием оператора цикла. Нужно каждому элементу присваивать значение "в индивидуальном порядке". Это очень неудобно, особенно если массив большой. В таких случаях удобно выполнять явную инициализацию массива. Делается все достаточно просто: при объявлении переменной массива ей присваивается список со значениями, которые формируют массив. Значения в списке заключаются в фигурные скобки. Внутри скобок значения разделяются запятыми. Например, если мы воспользуемся командой

  int[] nums= {1,3,5};     , 
то в результате будет создан целочисленный массив из трех элементов. Значение первого элемента равно 1, значение второго элемента равно 3, значение третьего элемента равно 5. Ссылка на созданный массив записывается в переменную nums.


Кроме команды
  int[] nums= {1,3,5};     , 
для создания и инициализации массива можно было бы воспользоваться командами
  int[] nums = new int [3] {1,3,5}; 
или
  int[] nums = new int [] {1,3,5};    . 
Разница между последними двумя командами в том, что в одной размер массива указан явно, а в другой - нет. Если размер массива не указан, то он автоматически определяется по количеству элементов в списке инициализации. Если размер массива указан, то он должен соответствовать количеству элементов в списке инициализации. В противном случае возникает ошибка.

    Небольшой пример с инициализацией различных массивов приведен в программе, текст которой представлен ниже.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace pr51_1
{
    class Program
    {
        static void Main()
        {
            // Создание и инициализация массивов:
            int[] nums = {1, 3, 5, 7, 6, 5, 4};
            char[] symbs = new char[]{'A', 'Z', 'B', 'Y'};
            string[] txts = new string[3]{"один", "два", "три"};

            // Отображение содержимого массивов:
            Console.WriteLine("Массив nums:"); 
            for(int k = 0; k < nums.Length; k++){
                Console.Write(nums[k]+" ");
            }
            Console.WriteLine("\nМассив symbs:"); 
            for(int k = 0; k < symbs.Length; k++) {
                Console.Write(symbs[k]+" ");
            }
            Console.WriteLine("\nМассив txts:"); 
            for(int k = 0; k < txts.Length; k++){
                Console.Write(txts[k]+" ");
            }
            Console.WriteLine();
            // Задержка:
            Console.ReadLine();
        }
    }
}
Архив проекта можно взять здесь.

    Результат выполнения программы приведен на рисунке 1.


Рис.1. Результат работы приложения

    В данном случае программный код очень прост. В нем последовательно создается и инициализируется три массива:

Для каждого из этих массивов предусмотрен список со значениями, которыми инициализируются элементы массива.


Мы используем три конструкции цикла, в каждом из которых объявляется индексная переменная с названием k. Это разные переменные, хотя формально они имеют одинаковые названия. Каждая такая переменная доступна в пределах того цикла, в котором она объявлена. Более того, такая переменная существует, пока выполняется конструкция цикла: при запуске цикла на выполнение под переменную выделяется место, а когда цикл завершает работу - переменная удаляется (в памяти освобождается место, выделенное под эту переменную).

    На следующем шаге мы рассмотрим операции с массивами.




Предыдущий шаг Содержание Следующий шаг