C# Array Tutorial: Luo, ilmoita, alusta

⚡ Älykäs yhteenveto

C#-taulukot tallentavat kiinteän kokoisen kokoelman elementtejä, joilla on sama tietotyyppi, yhden muuttujanimen alle. Jokainen elementti sijaitsee nollapohjaisessa indeksissä, joten arvojen määrittäminen, alustaminen ja käyttäminen on nopeaa ja ennustettavaa.

  • 📌 Määritelmä: Taulukko sisältää useita saman tyyppisiä arvoja indeksoiduissa paikoissa, joihin päästään yhden muuttujan kautta.
  • ✅ ilmoitus: Hakasulkeissa oleva tietotyyppi ja nimi määrittävät taulukon, esimerkiksi Int32[]-arvot.
  • 🔢 alustus: new-avainsana asettaa koon, minkä jälkeen jokainen indeksi saa arvon, kuten values[0]=1.
  • 🔍 Access: Nollapohjainen indeksointi lukee tai kirjoittaa minkä tahansa elementin, joten ensimmäinen alkio on values[0] ja laskenta alkaa nollasta.
  • 🔁 Iteraatio: Foreach-silmukka käy läpi jokaisen indeksittömän elementin, mikä välttää arvoalueen ulkopuoliset virheet suuremmissa taulukoissa.
  • 🤖 AI-apu: GitHub Copilot luo taulukkomalleja, kun taas ML.NET lataa numeerisia taulukoita ominaisuuksina koneoppimismalleja varten.

C#-taulukot

Mikä on taulukko C#:ssa?

Taulukkoa käytetään elementtien kokoelman tai sarjan tallentamiseen. Nämä elementit ovat samantyyppisiä.

Jos sinulla on esimerkiksi joukko kokonaislukuarvoja, taulukko voisi olla kokoelma arvoja, kuten [1, 2, 3, 4]. Tässä taulukon elementtien lukumäärä on 4.

Taulukot ovat hyödyllisiä, kun haluat tallentaa kokoelman samantyyppisiä arvoja. Joten sen sijaan, että ilmoittaisit a muuttuja jokaiselle elementille voit ilmoittaa vain yhden muuttujan.

Tämä muuttuja osoittaa taulukkoon tai elementtiluetteloon, joka on vastuussa taulukon elementtien tallentamisesta.

Katsotaanpa, kuinka voimme työskennellä taulukoiden kanssa C#:ssa. Esimerkissämme julistamme joukon kokonaislukuja ja työskentelemme niiden kanssa vastaavasti.

Huomaa, että kaikki alla oleva koodi tehdään Program.cs-tiedostoon.

Vaihe 1) Taulukon ilmoittaminen – Ensimmäinen vaihe on taulukon ilmoittaminen. Katsotaanpa, kuinka voimme saavuttaa tämän alla olevan koodiesimerkin avulla.

Taulukot C#:ssa

Code Selitys:-

  1. Ensimmäinen osa on tietotyyppi. Se määrittää taulukossa käytettyjen elementtien tyypin. Joten meidän tapauksessamme luomme joukon kokonaislukuja.
  2. Toinen osa [ ], joka määrittää taulukon arvon. (Asetus on paikkamerkki, joka määrittää taulukon sisältämien elementtien määrän)
  3. Seuraava on taulukon nimi, joka meidän tapauksessamme on "arvot". Huomaa, että näet vihreän vinoavan alleviivauksen, älä huoli siitä. Se on vain .Net, joka sanoo, että olet ilmoittanut taulukon, mutta et käytä sitä missään.

Vaihe 2) Seuraava vaihe on alustaa taulukko. Tässä aiomme määrittää taulukon sisältämien arvojen määrän. Aiomme myös antaa arvot jokaiselle taulukon elementille.

Taulukot C#:ssa

Code Selitys:-

  1. Ensin asetamme taulukon sisältämien elementtien lukumääräksi 3. Joten hakasulkeissa sanomme, että taulukko sisältää 3 elementtiä.
  2. Sitten annamme arvot taulukon jokaiselle alkiolle. Voimme tehdä tämän määrittämällä muuttujan nimen + indeksin sijainnin taulukossa. Joten values[0] tarkoittaa, että tallennamme arvon taulukon ensimmäiseen sijaintiin. Vastaavasti toiseen sijaintiin pääsemiseksi käytämme merkintätapaa values[1] ja niin edelleen.

Huomautuksia: – Arraysissa indeksin sijainti alkaa 0:sta.

Vaihe 3) Näytetään nyt taulukon yksittäiset elementit konsolissa. Lisätään alla oleva koodi saavuttaaksemme tämän.

Taulukot C#:ssa

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 Selitys:-

Tämä on yksinkertainen osa, jossa käytämme vain Console.WriteLine-menetelmää elementin jokaisen arvon lähettämiseen konsoliin.

Huomaa, että taas pääsemme jokaiseen elementtiin taulukon muuttujan nimen ja indeksipaikan avulla.

Jos yllä oleva koodi on syötetty oikein ja ohjelma suoritetaan, seuraava tulos näytetään.

lähtö:

Taulukot C#:ssa

Tulosteesta näet kaikki taulukon arvot, jotka näkyvät konsolissa.

C#-taulukon läpikäyminen foreach-funktion avulla

Kunkin elementin lukeminen indeksin perusteella toimii, mutta siitä tulee työlästä, jos taulukossa on useita arvoja. Foreach-silmukka tarjoaa siistimmän tavan käydä läpi taulukon jokainen elementti järjestyksessä ilman tracKunnioita indeksimuuttujaa itse.

Foreach-lauseke ottaa jokaisen alkion taulukosta yksi kerrallaan ja kopioi ne silmukkamuuttujaan. Sitten käytät kyseistä muuttujaa silmukan rungon sisällä. Koska silmukka pysähtyy automaattisesti viimeiseen alkioon, foreach poistaa riskin lukea taulukon lopun jälkeen.

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

Yllä oleva esimerkki määrittelee ja alustaa kolmen kokonaisluvun taulukon ja käy sen läpi foreach-komennolla. Jokaisella läpimenolla muuttuja erä vastaanottaa seuraavan arvon ja Console.WriteLine tulostaa sen. Tulosteena ovat luvut 1, 2 ja 3 eri riveillä.

Tärkeimmät muistettavat asiat foreach-funktiosta taulukoiden kanssa:

  • Silmukkamuuttuja on vain luku -tilassa, joten foreach sopii parhaiten arvojen lukemiseen sen sijaan, että muuttaisi niitä paikallaan.
  • Muokataksesi elementtejä katsomisen aikanaping, käytä sen sijaan for-silmukkaa indeksin kanssa.
  • foreach toimii yksiulotteisten taulukoiden, moniulotteisten taulukoiden ja kaikkien iteraatiota tukevien kokoelmien kanssa.

C# moniulotteiset taulukot

Tähän mennessä esitetyt taulukot ovat yksiulotteisia, eli ne tallentavat yksinkertaisen arvoluettelon. C# tukee myös moniulotteisia taulukoita, jotka järjestävät elementit rivien ja sarakkeiden muodostamaan ruudukkoon. Kaksiulotteinen taulukko on yleisin muoto ja sopii esimerkiksi matriiseille, pelilaudoille ja taulukoille.

Kaksiulotteinen taulukko määritetään sijoittamalla pilkku hakasulkeiden sisään. Jokainen ylimääräinen pilkku lisää yhden ulottuvuuden, joten int[,] on kaksiulotteinen ja int[,,] on kolmiulotteinen. Elementteihin päästään sitten yhdellä indeksillä ulottuvuutta kohden.

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

Tässä taulukkomatriisissa on kaksi riviä ja kaksi saraketta. Alkio matriisi[0, 0] palauttaa arvon 1 ja matriisi[1, 1] palauttaa arvon 4. Ulottuvuuksien lukumäärä on kiinteä taulukkoa määritettäessä, kun taas kunkin ulottuvuuden koko asetetaan taulukkoa luotaessa.

C# rosoiset taulukot

Rosoinen taulukko on taulukko, jonka elementit ovat itse taulukoita. Toisin kuin suorakulmaisessa moniulotteisessa taulukossa, jokaisella sisätaulukolla voi olla eri pituus, minkä vuoksi rosoista taulukkoa kutsutaan usein taulukkotaulukoksi. Tämä joustavuus on hyödyllistä, kun riveillä on luonnostaan ​​eri määriä arvoja.

Määrität rosoisen taulukon, jossa on kaksi hakasulkeparia, ja luot sitten jokaisen sisäisen taulukon erikseen. Seuraavassa esimerkissä luodaan rosoinen taulukko, jossa ensimmäisellä rivillä on kolme arvoa ja toisella rivillä kaksi.

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

Lauseke jagged[0][2] lukee ensimmäisen rivin kolmannen elementin, joka on 3, ja jagged[1][1] lukee toisen rivin toisen elementin, joka on 5. Koska jokainen rivi on erillinen taulukko, rosoiset taulukot käyttävät muistia tehokkaasti, kun rivien pituudet vaihtelevat, vaikka ne tarvitsevatkin ylimääräisen vaiheen jokaisen sisäisen taulukon alustamiseksi.

UKK

Length-ominaisuus palauttaa C#-taulukon alkioiden kokonaismäärän. Esimerkiksi values.Length antaa arvon 3 kolmialkioiselle taulukolle. Moniulotteisille taulukoille GetLength(dimension) palauttaa kunkin tietyn ulottuvuuden koon.

AC#-taulukolla on kiinteä koko, joka asetetaan luonnin yhteydessä, kun taas lista (List) kasvaa ja kutistuu dynaamisesti. Taulukot ovat nopeampia kiinteän datan kanssa ja käyttävät vähemmän resursseja, kun taas lista sopii kokoelmille, joiden elementtimäärä muuttuu suorituksen aikana.

Tavallinen C#-taulukko tallentaa yhden määritellyn tyypin elementtejä, joten tyyppien sekoittaminen ei ole sallittua. Eri tyyppien tallentamiseksi määritä object[]-taulukko tai käytä kokoelmaa, kuten ArrayList, vaikka molemmat uhraavat käännösaikaisen tyyppiturvallisuuden.

Staattinen Array.Sort-metodi järjestää C#-taulukon elementit nousevaan järjestykseen. Anna taulukko Array.Sort(values)-metodille ja käytä Array-metodia.Reverse jälkeenpäin laskevaan järjestykseen. Lajittelu toimii numeroiden, merkkijonojen ja muiden vastaavien tyyppien kanssa.

Array.Copy kopioi joukon elementtejä yhdestä taulukosta toiseen, kun taas Clone-metodi luo pinnallisen kopion koko taulukosta. Yhden taulukkomuuttujan osoittaminen toiseen kopioi vain viittauksen, ei pohjana olevia elementtejä.

IndexOutOfRangeException-poikkeus tapahtuu, kun koodi käyttää taulukkosijaintia, jota ei ole olemassa, kuten kolmialkioisessa taulukossa olevaa values[5]. Koska C#-taulukot ovat nollapohjaisia, kelvolliset indeksit alkavat nollasta pituus miinus yksi -arvoon. Tarkista aina indeksi ensin.

Kyllä. GitHub Copilot ehdottaa taulukon määrittelyjä, alustusta ja silmukkalogiikkaa kommentin tai metodin nimen perusteella Visual Studiossa ja VS Code. RevTarkista jokainen ehdotus oikean koon ja indeksirajojen varalta, koska Copilot voi aiheuttaa yhden virheen ja alueen ulkopuolisia virheitä.

ML.NET esittää ominaisuusvektoreita ja mallisyötteitä C#-taulukoina, tyypillisesti float[]-taulukoina. Harjoitusdata latautuu taulukoihin tai span-taulukoihin, ja ennusteet palauttavat pistetaulukoita. Taulukoiden kiinteä koko ja nopea indeksointi tekevät niistä tehokkaita koneoppimisputkissa.

Tiivistä tämä viesti seuraavasti: