Урок за C# масив: Създаване, деклариране, инициализиране
⚡ Умно обобщение
Масивите в C# съхраняват колекция от елементи с фиксиран размер, които споделят един и същ тип данни, под едно име на променлива. Всеки елемент е с индекс, базиран на нула, така че декларирането, инициализирането и достъпът до стойности остават бързи и предвидими.
Какво е масив в C#?
Масивът се използва за съхраняване на колекция или поредица от елементи. Тези елементи ще бъдат от един и същи тип.
Така например, ако имате масив от стойности Integer, масивът може да бъде колекция от стойности като [1, 2, 3, 4]. Тук броят на елементите в масива е 4.
Масивите са полезни, когато искате да съхранявате колекция от стойности от един и същи тип. Така че вместо да декларирате a променлив за всеки елемент можете просто да декларирате една променлива.
Тази променлива ще сочи към масив или списък от елементи, които ще отговарят за съхраняването на елементите на масива.
Нека да разгледаме как можем да работим с масиви в C#. В нашия пример ще декларираме масив от цели числа и ще работим с тях по съответния начин.
Имайте предвид, че целият код по-долу се прави във файла Program.cs.
Стъпка 1) Деклариране на масив – Първата стъпка е да декларирате масив. Нека видим как можем да постигнем това чрез примера на код по-долу.
Code Обяснение:
- Първата част е тип данни. Той определя вида на елементите, използвани в масива. Така че в нашия случай ние създаваме масив от цели числа.
- Втората част [ ], която указва ранга на масива. (Рангът е контейнер, който указва броя на елементите, които масивът ще съдържа)
- Следва името на масива, което в нашия случай е „стойности“. Обърнете внимание, че виждате зелено криволичещо подчертаване, не се притеснявайте за това. Това просто .Net казва, че сте декларирали масив, но не го използвате никъде.
Стъпка 2) Следващата стъпка е да инициализирате масива. Тук ще посочим броя на стойностите, които масивът ще съдържа. Също така ще присвоим стойности на всеки елемент от масива.
Code Обяснение:
- Първо, задаваме броя на елементите, които масивът ще съдържа на 3. Така че в квадратните скоби казваме, че масивът ще съдържа 3 елемента.
- След това присвояваме стойности на всеки елемент от масива. Можем да направим това, като укажем името на променливата + индексната позиция в масива. Така че values[0] означава, че съхраняваме стойност на първата позиция в масива. По подобен начин, за да достъпим втората позиция, използваме нотацията values[1] и така нататък.
Забележка: – В масивите позицията на индекса започва от 0.
Стъпка 3) Нека сега изведем отделните елементи на масива в конзолата. Нека добавим кода по-долу, за да постигнем това.
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# масив с помощта на 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(); } } }
Тук матрицата масив съдържа два реда и две колони. Елементът матрица[0, 0] връща 1, а матрица[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. Тъй като всеки ред е отделен масив, назъбените масиви използват паметта ефективно, когато дължините на редовете варират, въпреки че се нуждаят от допълнителна стъпка за инициализиране на всеки вътрешен масив.





