Как сделать массив в си шарп

Обновлено: 07.07.2024

Приветствую всех. Сегодня я решил написать статью в которых будут рассмотрены примеры работы с массивами.

Объявления массива

Объявления массива происходит так же как и обычной переменной другого типа. Типы массивов могут быть как int, string, double, итд.

Обращение к массиву и присваивание значений по индексу:

Индекс в массиве всегда начинается с 0.

Рассмотрим и другие варианты инициализации массива:

Важно!

Следующий пример выведет 0, поскольку массив чисел инициализирован нулями.

Однако стоит помнить что в случаи инициализации строк в них значение будет null

Почему так спросите вы? Есть некая фундаментальная разница между массивами и строками с одной стороны и числами — с другой.

Методы.

Массив имеет собственные методы, опишу часто используемые методы:

CopyTo(array,Int32); Копирует все элементы текущего одномерного массива в заданный одномерный массив начиная с указанного индекса в массиве назначения.

Equal(); Определяет, равен ли заданный объект текущему объекту.

IndexOf(Array,Object); Выполняет поиск указанного объекта внутри всего одномерного массива и возвращает индекс его первого вхождения.

Reverse(Array); Array .">Изменяет последовательность элементов в диапазоне элементов одномерного массива .

Sort(Array); Array using the IComparable implementation of each element of the Array .">Сортирует элементы во всем одномерном массиве.

Как вывести содержимое массива:

Вариант с помощью for

Вариант с помощью foreach

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

Стоит помнить что массив, как и строка, может быть равен null и соответственно, не инициализированные глобальные переменные типа массивов также равны null.

Передача массива в метод.

Теперь перейдем к одной из важных частей рассмотрения массива. О том как массив передается в метод и что с ним происходит.

Что такое массив?

До сих пор в учебнике мы сосредоточились на основных типах данных. В каждом случае тип данных хранит одно значение. Часто необходимо сгруппировать связанные значения, представляющие ряд данных, табличные данные или более сложные структуры. Один из способов достижения этого - создание массива.

Простое объявление массива

Наиболее основным типом массива является одномерный массив. Он предоставляет простой список значений. Метод, используемый для объявления массива, похож на метод любой другой переменной. Однако за типом данных в объявлении следует пара квадратных скобок. В следующем примере создается массив целых чисел.

Объявленный таким образом массив содержит null. Мы можем инициализировать массив, используя ключевое слово new и указывая количество элементов, которые нам требуются в списке:

Как и в предыдущих объявлениях, два элемента могут быть объединены в один оператор:

Нумерация индексов

Инициализация массива

Получение длины массива

Возможно, размер обрабатываемого массива неизвестен. Чтобы убедиться, что границы массива не превышены во время обработки, можно получить длину массива с помощью свойства Length. При чтении свойства массива квадратные скобки опскаются.

Двумерные массивы

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


Первое измерение массива будет указывать номера строк, а второе измерение - столбцы. Для объявления такого массива границы измерений разделяются запятыми в квадратных скобках. Та же нотация используется для доступа к отдельным переменным.

Инициализация двумерного массива

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

Многомерный массив

Массивы могут содержать любое количество измерений. Чтобы добавить дополнительные измерения, в объявление можно включить дополнительные запятые и диапазоны. Инициализация массива становится более сложной с дальнейшими вложенными, разделенными запятыми списками списков. Однако при использовании таких сложных структур они обычно инициализируются программно, возможно, с использованием информации из базы данных.

Получение размера многомерного массива

Размер многомерного массива можно запросить двумя способами. Свойство Length возвращает количество отдельных переменных всего массива. Это равно произведению размеров каждого измерения.

Длина многомерного массива может быть полезным числом. Однако это не говорит нам всего, что мы можем хотеть знать о массиве. Возможно, нам потребуется определить количество измерений, содержащихся в массиве, и длину каждого измерения. Свойство Rank возвращает целое число, содержащее первое. Для последнего используется свойство GetLength с аргументом, указывающим номер измерения для запроса.

Массив массивов

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


Назначение и копирование массивов

Все объекты, включая массивы являются ссылочными типами. Это означает, что данные в объекте хранится в памяти компьютера и переменная содержит указатель на эту память. Если одна переменная объекта назначена другой, дублируется только указатель на местоположение памяти; обе переменные фактически указывают на одни и те же данные. Таким образом, изменение значений одного объекта отражается на другом объекте.

Это можно продемонстрировать, присвоив один массив другому. Изменение любого из элементов любого массива отображается в обоих:

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

Клонирование массивов

Часто необходимо создать копию массива, которой можно манипулировать, не повреждая содержимое оригинала. Для этого класса массива включает в себя метод Clone. Вместо того, чтобы назначать простую ссылку, это создает совершенно новую копию массива. Метод Clone возвращает объект, но конкретный тип массива не указан, поэтому этот объект должен быть приведен к правильному типу для назначения.

Аннотация: Данная лекция рассматривает одномерные и многомерные массивы. Приведено большое количество практических примеров и заданий.

Рассмотрим различные типы массивов.

Одномерные массивы

В общем случае процесс объявления переменной типа массив, и выделение необходимого объема памяти может быть разделено. Кроме того на этапе объявления массива можно произвести его инициализацию. Поэтому для объявления одномерного массива может использоваться одна из следующих форм записи:

Представим, что нам одновременно нужно хранить информацию в десяти разных переменных одного типа, каждая из которых представляет собой некий показатель эффективности выполнения какого-нибудь (сейчас это действительно неважно) процесса. В коде это будет выглядеть примерно так:

Как несложно догадаться, индекс элемента указывается в квадратных скобка, расположенных сразу после названия массива. А в приведенном выше примере, мы установили значение первому, пятому, и последнему элементам массива.

Тогда доступ к последнему элементу массива будет обозначаться так:

Согласитесь, что так уже нагляднее, но не только нагляднее, но и практичнее, например, если мы захотим увеличить размер нашего массива, то нам нужно будет изменить только одно место – место объявления константы, примерно так:

Читайте также: