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: