Vodič za C# polje: Stvori, deklariraj, inicijaliziraj

⚡ Pametni sažetak

C# nizovi pohranjuju kolekciju elemenata fiksne veličine koji dijele isti tip podataka pod jednim nazivom varijable. Svaki element se nalazi na indeksu koji se temelji na nuli, tako da deklariranje, inicijalizacija i pristup vrijednostima ostaje brz i predvidljiv.

  • 📌 Definicija: Niz sadrži više vrijednosti istog tipa na indeksiranim pozicijama do kojih se dolazi putem jedne varijable.
  • ✅ Izjava: Tip podataka iza kojeg slijede uglate zagrade i naziv deklarira niz, na primjer vrijednosti Int32[].
  • 🔢 Inicijalizacija: Ključna riječ nova postavlja veličinu, a zatim svaki indeks prima vrijednost kao što je values[0]=1.
  • 🔍 Pristup: Indeksiranje od nule čita ili zapisuje bilo koji element, tako da je prvi element values[0] i brojanje počinje od 0.
  • 🔁 Iteracija: Petlja foreach prolazi kroz svaki element bez indeksa, što izbjegava pogreške izvan raspona na većim nizovima.
  • 🤖 AI pomoć: GitHub Copilot generira predloške nizova, dok ML.NET učitava numeričke nizove kao značajke za modele strojnog učenja.

C# nizovi

Što je niz u C#?

Niz se koristi za pohranu zbirke ili niza elemenata. Ovi će elementi biti iste vrste.

Na primjer, ako imate niz vrijednosti Integer, niz bi mogao biti skup vrijednosti kao što je [1, 2, 3, 4]. Ovdje je broj elemenata u nizu 4.

Nizovi su korisni kada želite pohraniti kolekciju vrijednosti iste vrste. Dakle, umjesto deklariranja a varijabla za svaki element, možete deklarirati samo jednu varijablu.

Ova varijabla će ukazivati ​​na polje ili popis elemenata, koji će biti odgovorni za pohranjivanje elemenata niza.

Pogledajmo kako možemo raditi s nizovima u C#. U našem primjeru ćemo deklarirati niz Integers i raditi s njima u skladu s tim.

Imajte na umu da se sav kod u nastavku izrađuje u datoteci Program.cs.

Korak 1) Deklariranje niza – Prvi korak je deklariranje niza. Pogledajmo kako to možemo postići pomoću donjeg primjera koda.

Nizovi u C#

Code Obrazloženje:-

  1. Prvi dio je tip podataka. Određuje vrstu elemenata koji se koriste u nizu. Dakle, u našem slučaju stvaramo niz cijelih brojeva.
  2. Drugi dio [ ], koji specificira rang niza. (Rang je rezervirano mjesto koje određuje broj elemenata koje će polje sadržavati)
  3. Sljedeće je ime polja koje je u našem slučaju 'vrijednosti'. Imajte na umu da vidite zelenu vijugavu crtu, ne brinite zbog toga. To samo .Net govori da ste deklarirali niz, ali ga nigdje ne koristite.

Korak 2) Sljedeći korak je inicijalizacija niza. Ovdje ćemo navesti broj vrijednosti koje će polje sadržavati. Također ćemo dodijeliti vrijednosti svakom elementu niza.

Nizovi u C#

Code Obrazloženje:-

  1. Prvo, postavljamo broj elemenata koje će niz sadržavati na 3. Dakle, u uglatim zagradama, kažemo da će niz sadržavati 3 elementa.
  2. Zatim dodjeljujemo vrijednosti svakom elementu niza. To možemo učiniti određivanjem naziva varijable + indeksne pozicije u nizu. Dakle, vrijednosti[0] znači da pohranjujemo vrijednost na prvu poziciju niza. Slično tome, za pristup drugoj poziciji koristimo notaciju vrijednosti[1] i tako dalje.

bilješke: – U polju, pozicija indeksa počinje od 0.

Korak 3) Prikažimo sada pojedinačne elemente niza u konzoli. Dodajmo donji kod da bismo to postigli.

Nizovi u 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 Obrazloženje:-

Ovo je jednostavan dio u kojem samo koristimo metodu Console.WriteLine za slanje svake vrijednosti elementa na konzolu.

Imajte na umu da ponovno pristupamo svakom elementu uz pomoć naziva varijable niza zajedno s pozicijom indeksa.

Ako se gornji kod ispravno unese i program se izvrši, prikazat će se sljedeći izlaz.

Izlaz:

Nizovi u C#

Iz izlaza možete vidjeti sve vrijednosti polja koje se prikazuju u konzoli.

Kako proći kroz C# niz pomoću naredbe foreach

Čitanje svakog elementa po njegovom indeksu funkcionira, ali postaje zamorno kada niz sadrži mnogo vrijednosti. Petlja foreach nudi čišći način posjećivanja svakog elementa niza redom bez tracsami kraljujte indeksnu varijablu.

Naredba foreach uzima svaku stavku iz niza jednu po jednu i kopira je u varijablu petlje. Tu varijablu zatim koristite unutar tijela petlje. Budući da se petlja automatski zaustavlja na posljednjem elementu, foreach uklanja rizik čitanja nakon kraja niza.

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();
  }
 }
}

Gornji primjer deklarira i inicijalizira niz od tri cijela broja, a zatim prolazi kroz njega s foreach. U svakom prolazu varijabla stavka prima sljedeću vrijednost, a Console.WriteLine je ispisuje. Izlaz su brojevi 1, 2 i 3 u odvojenim retcima.

Ključne stvari koje treba zapamtiti o foreach funkciji s nizovima:

  • Varijabla petlje je samo za čitanje, pa je foreach najbolja za čitanje vrijednosti, a ne za njihovu promjenu na mjestu.
  • Za izmjenu elemenata dok se gleda WCping, umjesto toga koristite for petlju s indeksom.
  • Funkcija foreach radi s jednodimenzionalnim nizovima, višedimenzionalnim nizovima i bilo kojom kolekcijom koja podržava iteraciju.

C# višedimenzionalni nizovi

Do sada prikazani nizovi su jednodimenzionalni, što znači da pohranjuju jednostavan popis vrijednosti. C# također podržava višedimenzionalne nizove, koji elemente raspoređuju u mrežu redaka i stupaca. Dvodimenzionalni niz je najčešći oblik i odgovara podacima kao što su matrice, ploče za igru ​​i tablice.

Dvodimenzionalni niz deklarirate stavljanjem zareza unutar uglatih zagrada. Svaki dodatni zarez dodaje još jednu dimenziju, pa je int[,] dvodimenzionalan, a int[,,] trodimenzionalan. Elementi se zatim dosežu s jednim indeksom po dimenziji.

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();
  }
 }
}

Ovdje matrica polja sadrži dva retka i dva stupca. Element matrica[0, 0] vraća 1, a matrica[1, 1] vraća 4. Broj dimenzija je fiksan prilikom deklaracije polja, dok se veličina svake dimenzije postavlja prilikom stvaranja polja.

C# nazubljeni nizovi

Nazubljeni niz je niz čiji su elementi sami nizovi. Za razliku od pravokutnog višedimenzionalnog niza, svaki unutarnji niz može imati različitu duljinu, zbog čega se nazubljeni niz često naziva nizom nizova. Ova fleksibilnost pomaže kada retci prirodno sadrže različit broj vrijednosti.

Deklarira se nazubljeni niz s dva seta uglatih zagrada, a zatim se svaki unutarnji niz zasebno stvara. Sljedeći primjer gradi nazubljeni niz gdje prvi redak sadrži tri vrijednosti, a drugi redak dvije.

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();
  }
 }
}

Izraz jagged[0][2] čita treći element prvog retka, koji je 3, a jagged[1][1] čita drugi element drugog retka, koji je 5. Budući da je svaki redak zaseban niz, nazubljeni nizovi učinkovito koriste memoriju kada se duljine redaka razlikuju, iako im je potreban dodatni korak za inicijalizaciju svakog unutarnjeg niza.

Pitanja i odgovori

Svojstvo Length vraća ukupan broj elemenata u C# polju. Na primjer, values.Length vraća 3 za polje s tri elementa. Za višedimenzionalna polja, GetLength(dimension) vraća veličinu svake određene dimenzije.

AC# niz ima fiksnu veličinu postavljenu prilikom stvaranja, dok lista raste i smanjuje se dinamički. Nizovi su brži za fiksne podatke i koriste manje opterećenja, dok lista odgovara kolekcijama čiji se broj elemenata mijenja tijekom izvođenja.

Standardni C# niz pohranjuje elemente jednog deklariranog tipa, tako da miješanje tipova nije dopušteno. Za pohranjivanje različitih tipova, deklarirajte niz object[] ili koristite kolekciju poput ArrayList, iako oboje žrtvuje sigurnost tipova tijekom kompajliranja.

Statička metoda Array.Sort slaže elemente C# polja uzlaznim redoslijedom na mjestu. Proslijedite polje metodi Array.Sort(values) i koristite Array.Reverse nakon toga za silazni redoslijed. Sortiranje funkcionira na brojevima, nizovima znakova i drugim usporedivim tipovima.

Array.Copy duplicira raspon elemenata iz jednog polja u drugo, dok metoda Clone stvara plitku kopiju cijelog polja. Dodjeljivanje jedne varijable polja drugoj kopira samo referencu, a ne i temeljne elemente.

Iznimka IndexOutOfRangeException javlja se kada kod pristupi poziciji polja koja ne postoji, kao što su vrijednosti[5] u polju s tri elementa. Budući da se polja u C# temelje na nuli, valjani indeksi idu od 0 do duljine minus jedan. Uvijek prvo provjerite indeks.

Da. GitHub Copilot predlaže deklaracije nizova, inicijalizaciju i logiku petlje iz komentara ili naziva metode unutar Visual Studija i VS Code. RevPogledajte svaki prijedlog za ispravnu veličinu i granice indeksa, budući da Copilot može unijeti pogreške izvan raspona i izvan njega.

ML.NET predstavlja vektore značajki i ulaze modela kao C# polja, obično polja tipa float[]. Podaci za učenje učitavaju se u polja ili raspone, a predviđanja vraćaju polja rezultata. Fiksna veličina i brzo indeksiranje polja čine ih učinkovitima za cjevovode strojnog učenja.

Sažmite ovu objavu uz: