Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Массивы в C#: объявление, инициализация и доступ к элементам

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

Массив — фиксированная по размеру упорядоченная коллекция элементов одного типа. Элементы хранятся в смежных ячейках памяти. Индексация начинается с 0.

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

тип[] имяМассива; // предпочтительный синтаксис
// или
тип []имяМассива; // допустим, но не рекомендуется

Пример: double[] balance;

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

Массив — ссылочный тип, требует new для выделения памяти:

double[] balance = new double[10]; // 10 элементов, заполнены 0

Способы инициализации с значениями

// 1. Инициализатор коллекции (размер определяется автоматически)
double[] balance = { 2340.0, 4523.69, 3421.0 };

// 2. С явным размером
int[] marks = new int[5] { 99, 98, 92, 97, 95 };

// 3. Размер можно опустить при инициализаторе
int[] marks2 = new int[] { 99, 98, 92, 97, 95 };

// 4. Присваивание одной переменной другой (ссылка на тот же массив)
int[] score = marks; // score и marks ссылаются на один объект

Значения по умолчанию

При создании массива элементы инициализируются значением по умолчанию для типа:

Доступ к элементам

double salary = balance[9]; // 10-й элемент (индекс 9)
balance[0] = 4500.0; // присваивание

Пример: объявление, заполнение и вывод

using System;

namespace ArrayApplication
{
    class MyArray
    {
        static void Main(string[] args)
        {
            int[] n = new int[10];

            // заполнение
            for (int i = 0; i < 10; i++)
                n[i] = i + 100;

            // вывод через for
            for (int j = 0; j < 10; j++)
                Console.WriteLine($"Element[{j}] = {n[j]}");

            Console.ReadKey();
        }
    }
}

Цикл foreach для массивов

foreach (int element in n)
{
    Console.WriteLine(element);
}

Важно: В foreach переменная итерации только для чтения — изменить элемент массива через неё нельзя.

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

Прямоугольные (rectangular) — массив массивов фиксированных размеров

// Двумерный 3x4
int[,] matrix = new int[3, 4];
matrix[0, 0] = 1;
matrix[2, 3] = 42;

// Инициализация
int[,] grid = { {1, 2}, {3, 4}, {5, 6} };

// Перебор
for (int i = 0; i < grid.GetLength(0); i++)
    for (int j = 0; j < grid.GetLength(1); j++)
        Console.Write(grid[i, j] + " ");

Зубчатые (jagged) — массив массивов разной длины

int[][] jagged = new int[3][];
jagged[0] = new int[] { 1, 2 };
jagged[1] = new int[] { 3, 4, 5, 6 };
jagged[2] = new int[] { 7 };

// Инициализация
int[][] data = { new[] {1,2}, new[] {3,4,5}, new[] {6} };

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

void PrintArray(int[] arr)
{
    foreach (int x in arr) Console.Write(x + " ");
}

// Вызов
int[] nums = { 1, 2, 3 };
PrintArray(nums); // передаётся ссылка на массив

Изменения элементов внутри метода видны снаружи (передача ссылки по значению).

Параметры-массивы (params)

void PrintAll(params object[] items)
{
    foreach (var item in items) Console.Write(item + " ");
}

PrintAll(1, "hello", 3.14, true); // удобно для переменного числа аргументов

Класс Array — базовый для всех массивов

В пространстве имён System. Полезные члены:

ЧленОписание
LengthОбщее число элементов (только чтение)
RankЧисло измерений
GetLength(dimension)Размер указанного измерения
Sort()Сортировка (статический метод)
Reverse()Реверс (статический)
IndexOf()Поиск индекса (статический)
Copy()Копирование массивов (статический)
Resize()Изменение размера (создаёт новый массив)

Язык C

  1. Массивы в C#: объявление, инициализация и операции
  2. Зубчатые массивы в C#: объявление, инициализация и доступ
  3. Как передавать массивы в функции в C++: практическое руководство
  4. Как передавать одномерные и двумерные массивы в функции в C — практическое руководство
  5. Понимание взаимосвязи между массивами и указателями в C
  6. Техники копирования массивов в Java: подробное руководство
  7. Массивы в C++: объявление, инициализация и работа с указателями
  8. Динамическое выделение массивов в C++: практическое руководство с примерами кода
  9. Учебник по массивам в Java: объявление, создание и инициализация с примерами кода
  10. MATLAB: Мастерство работы с многомерными и специальными массивами