Навчальний посібник із масиву C#: створення, оголошення, ініціалізація

⚡ Розумний підсумок

Масиви в C# зберігають колекцію елементів фіксованого розміру, які мають однаковий тип даних, під однією змінною. Кожен елемент має індекс, що починається з нуля, тому оголошення, ініціалізація та доступ до значень залишаються швидкими та передбачуваними.

  • 📌 Визначення: Масив містить кілька значень одного типу в індексованих позиціях, до яких можна дістатися через одну змінну.
  • ✅ Декларація: Тип даних, за яким йдуть квадратні дужки та ім'я, оголошує масив, наприклад, значення Int32[].
  • 🔢 Ініціалізація: Ключове слово new встановлює розмір, після чого кожен індекс отримує значення, таке як values[0]=1.
  • 🔍 Доступ: Індексація з нуля зчитує або записує будь-який елемент, тому перший елемент — це values[0], а підрахунок починається з 0.
  • 🔁 Ітерація: Цикл foreach обходить кожен елемент без індексу, що дозволяє уникнути помилок, пов'язаних з виходом за межі діапазону значень, на великих масивах.
  • 🤖 Допомога AI: GitHub Copilot генерує шаблони масивів, тоді як ML.NET завантажує числові масиви як функції для моделей машинного навчання.

Масиви в C#

Що таке масиви в C#?

Масив використовується для зберігання колекції або серії елементів. Ці елементи будуть одного типу.

Так, наприклад, якщо у вас є масив цілих значень, масив може бути набором значень, таких як [1, 2, 3, 4]. Тут кількість елементів у масиві дорівнює 4.

Масиви корисні, коли потрібно зберігати колекцію значень одного типу. Тож замість оголошення a змінна для кожного елемента можна оголосити лише одну змінну.

Ця змінна буде вказувати на масив або список елементів, які відповідатимуть за зберігання елементів масиву.

Давайте подивимося, як ми можемо працювати з масивами в C#. У нашому прикладі ми оголосимо масив Integers і будемо працювати з ними відповідно.

Зауважте, що весь наведений нижче код створено у файлі Program.cs.

Крок 1) Оголошення масиву. Першим кроком є ​​оголошення масиву. Давайте подивимося, як ми можемо цього досягти за допомогою наведеного нижче прикладу коду.

Масиви в C#

Code Пояснення:

  1. Перша частина - це тип даних. Він визначає тип елементів, які використовуються в масиві. Отже, у нашому випадку ми створюємо масив цілих чисел.
  2. Друга частина [ ], яка задає ранг масиву. (Ранг — це заповнювач, який визначає кількість елементів, які міститиме масив)
  3. Далі йде ім’я масиву, яке в нашому випадку є «значеннями». Зверніть увагу, що ви бачите зелене хвилясте підкреслення, не турбуйтеся про це. Це просто .Net говорить, що ви оголосили масив, але ніде його не використовуєте.

Крок 2) Наступним кроком є ​​ініціалізація масиву. Тут ми збираємося вказати кількість значень, які буде містити масив. Ми також присвоїмо значення кожному елементу масиву.

Масиви в C#

Code Пояснення:

  1. По-перше, ми встановлюємо 3 елементи, які буде містити масив. Отже, у квадратних дужках ми говоримо, що масив міститиме 3 елементи.
  2. Потім ми присвоюємо значення кожному елементу масиву. Ми можемо зробити це, вказавши назву змінної + позицію індексу в масиві. Отже, значення[0] означає, що ми зберігаємо значення в першій позиції масиву. Аналогічно, для доступу до другої позиції ми використовуємо позначення значення[1] і так далі.

Примітка:: – У масивах позиція індексу починається з 0.

Крок 3) Давайте тепер відобразимо окремі елементи масиву в Консолі. Давайте додамо наведений нижче код, щоб досягти цього.

Масиви в C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args) 
  {
   Int32[] value;
   value=new Int32[3];
   
   value[0]=1;
   value[1]=2;
   value[2]=3;
   
   Console.WriteLine(value[0]);
   Console.WriteLine(value[1]);
   Console.WriteLine(value[2]);
    
   Console.ReadKey(); 
  }
 }
}

Code Пояснення:

Це проста частина, в якій ми просто використовуємо метод Console.WriteLine для надсилання кожного значення елемента на консоль.

Зверніть увагу, що знову ми отримуємо доступ до кожного елемента за допомогою назви змінної масиву разом із позицією індексу.

Якщо наведений вище код введено належним чином і програма виконана, буде показано наступний вихід.

вихід:

Масиви в C#

З результату ви можете побачити всі значення масиву, які відображаються в Консолі.

Як перебрати масив C# за допомогою foreach

Читання кожного елемента за його індексом працює, але стає нудним, коли масив містить багато значень. Цикл foreach пропонує зрозуміліший спосіб перегляду кожного елемента масиву по порядку без... tracсамостійно створити індексну змінну.

Оператор foreach бере кожен елемент з масиву по одному та копіює його в змінну циклу. Потім ця змінна використовується всередині тіла циклу. Оскільки цикл автоматично зупиняється на останньому елементі, foreach усуває ризик читання після кінця масиву.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Int32[] values = new Int32[3] {1, 2, 3};
   foreach (Int32 item in values)
   {
    Console.WriteLine(item);
   }
   Console.ReadKey();
  }
 }
}

У наведеному вище прикладі оголошується та ініціалізується масив із трьох цілих чисел, а потім виконується перебір його за допомогою функції foreach. На кожному проході змінна пункт отримує наступне значення, а Console.WriteLine його виводить. Вивідними є числа 1, 2 та 3 на окремих рядках.

Ключові моменти, які слід пам'ятати про foreach з масивами:

  • Змінна циклу доступна лише для читання, тому foreach найкраще використовувати для читання значень, а не для їх зміни.
  • Змінити елементи під час перегляду туалетуping, використовуйте замість цього цикл for з індексом.
  • Функція foreach працює з одновимірними масивами, багатовимірними масивами та будь-якою колекцією, що підтримує ітерацію.

Багатовимірні масиви в C#

Масиви, показані досі, є одновимірними, тобто вони зберігають простий список значень. C# також підтримує багатовимірні масиви, які розташовують елементи у вигляді сітки з рядків і стовпців. Двовимірний масив є найпоширенішою формою і підходить для таких даних, як матриці, ігрові дошки та таблиці.

Двовимірний масив оголошується комою всередині квадратних дужок. Кожна зайва кома додає ще один вимір, тому int[,] є двовимірним, а int[,,] — тривимірним. Елементи потім досягаються з одним індексом на вимір.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[,] matrix = new int[2, 2] { {1, 2}, {3, 4} };
   Console.WriteLine(matrix[0, 0]);
   Console.WriteLine(matrix[1, 1]);
   Console.ReadKey();
  }
 }
}

Тут матриця масиву містить два рядки та два стовпці. Елемент matrix[0, 0] повертає 1, а matrix[1, 1] повертає 4. Кількість вимірів фіксована під час оголошення масиву, тоді як розмір кожного виміру встановлюється під час створення масиву.

Зубчасті масиви в C#

Зубчастий масив — це масив, елементи якого самі є масивами. На відміну від прямокутного багатовимірного масиву, кожен внутрішній масив може мати різну довжину, тому зубчастий масив часто називають масивом масивів. Ця гнучкість допомагає, коли рядки природно містять різну кількість значень.

Ви оголошуєте зубчастий масив з двома наборами квадратних дужок, а потім створюєте кожен внутрішній масив окремо. У наступному прикладі створюється зубчастий масив, де перший рядок містить три значення, а другий рядок — два.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[][] jagged = new int[2][];
   jagged[0] = new int[] {1, 2, 3};
   jagged[1] = new int[] {4, 5};
   Console.WriteLine(jagged[0][2]);
   Console.WriteLine(jagged[1][1]);
   Console.ReadKey();
  }
 }
}

Вираз jagged[0][2] зчитує третій елемент першого рядка, який дорівнює 3, а jagged[1][1] зчитує другий елемент другого рядка, який дорівнює 5. Оскільки кожен рядок є окремим масивом, масиви jagged ефективно використовують пам'ять, коли довжина рядків змінюється, хоча їм потрібен додатковий крок для ініціалізації кожного внутрішнього масиву.

Поширені запитання

Властивість Length повертає загальну кількість елементів у масиві C#. Наприклад, values.Length повертає 3 для масиву з трьох елементів. Для багатовимірних масивів GetLength(dimension) повертає розмір кожного конкретного виміру.

Масив AC# має фіксований розмір, встановлений під час створення, тоді як список (List) зростає та зменшується динамічно. Масиви швидші для фіксованих даних та використовують менше накладних витрат, тоді як список (List) підходить для колекцій, кількість елементів яких змінюється під час виконання.

Стандартний масив C# зберігає елементи одного оголошеного типу, тому змішування типів не допускається. Щоб зберігати різні типи, оголосіть масив object[] або використовуйте колекцію, таку як ArrayList, хоча обидва варіанти жертвують безпекою типів під час компіляції.

Статичний метод Array.Sort упорядковує елементи масиву C# у порядку зростання. Передайте масив до Array.Sort(values) та використовуйте Array.Reverse далі для порядку спадання. Сортування працює з числами, рядками та іншими порівнянними типами.

Array.Copy дублює діапазон елементів з одного масиву в інший, тоді як метод Clone створює поверхневу копію всього масиву. Присвоєння однієї змінної масиву іншій копіює лише посилання, а не основні елементи.

Виняток IndexOutOfRangeException виникає, коли код звертається до позиції масиву, якої не існує, наприклад, до значень [5] у масиві з трьох елементів. Оскільки масиви C# базуються на нулі, дійсні індекси починаються від 0 до значення Length мінус один. Завжди спочатку перевіряйте індекс.

Так. GitHub Copilot пропонує оголошення масивів, ініціалізацію та логіку циклів на основі коментаря або назви методу всередині Visual Studio та VS Code. RevПерегляньте кожну пропозицію щодо правильного визначення розміру та меж індексу, оскільки Copilot може призводити до помилок, що виходять за межі діапазону та відхиляються на одиницю.

ML.NET представляє вектори ознак та вхідні дані моделі як масиви C#, зазвичай масиви типу float[]. Навчальні дані завантажуються в масиви або діапазони, а прогнози повертають масиви результатів. Фіксований розмір та швидка індексація масивів роблять їх ефективними для конвеєрів машинного навчання.

Підсумуйте цей пост за допомогою: