Массивы в 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 ссылаются на один объект
Значения по умолчанию
При создании массива элементы инициализируются значением по умолчанию для типа:
- Числовые типы →
0 bool→falsechar→'\0'- Ссылочные типы →
null
Доступ к элементам
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
- Массивы в C#: объявление, инициализация и операции
- Зубчатые массивы в C#: объявление, инициализация и доступ
- Как передавать массивы в функции в C++: практическое руководство
- Как передавать одномерные и двумерные массивы в функции в C — практическое руководство
- Понимание взаимосвязи между массивами и указателями в C
- Техники копирования массивов в Java: подробное руководство
- Массивы в C++: объявление, инициализация и работа с указателями
- Динамическое выделение массивов в C++: практическое руководство с примерами кода
- Учебник по массивам в Java: объявление, создание и инициализация с примерами кода
- MATLAB: Мастерство работы с многомерными и специальными массивами