C# massiivi õpetus: loomine, deklareerimine, initsialiseerimine

⚡ Nutikas kokkuvõte

C# massiivid salvestavad fikseeritud suurusega elementide kogumit, millel on sama andmetüüp ühe muutujanime all. Iga element asub nullpõhises indeksis, seega on väärtuste deklareerimine, initsialiseerimine ja neile juurdepääs kiire ja prognoositav.

  • 📌 Määratlus: Massiiv sisaldab mitut ühte tüüpi väärtust indekseeritud positsioonidel, milleni jõutakse ühe muutuja kaudu.
  • Deklaratsioon: Andmetüüp, millele järgnevad nurksulud ja nimi, deklareerib massiivi, näiteks Int32[] väärtused.
  • 🔢 Initsialiseerimine: Märksõna „new” määrab suuruse ja seejärel saab iga indeks väärtuse, näiteks „values[0]=1”.
  • 🔍 Access: Nullipõhine indekseerimine loeb või kirjutab mis tahes elementi, seega esimene element on väärtused[0] ja loendamine algab nullist.
  • 🔁 Kordamine: Foreach-tsükkel läbib iga elemendi ilma indeksita, mis väldib suuremate massiivide puhul vahemikust väljas olevaid vigu.
  • 🤖 AI abi: GitHub Copilot genereerib massiivide malli, samas kui ML.NET laadib masinõppemudelite funktsioonidena numbrilisi massiive.

C# massiivid

Mis on massiivid C#-s?

Massiivi kasutatakse elementide kogu või seeria salvestamiseks. Need elemendid on sama tüüpi.

Näiteks kui teil on täisarvuliste väärtuste massiiv, võib massiiv olla väärtuste kogum, näiteks [1, 2, 3, 4]. Siin on massiivi elementide arv 4.

Massiivid on kasulikud, kui soovite salvestada sama tüüpi väärtuste kogu. Nii et selle asemel, et kuulutada a muutuja iga elemendi jaoks saate deklareerida ainult ühe muutuja.

See muutuja osutab massiivile või elementide loendile, mis vastutab massiivi elementide salvestamise eest.

Vaatame, kuidas saame C#-s massiividega töötada. Meie näites deklareerime täisarvude massiivi ja töötame nendega vastavalt.

Pange tähele, et kogu allolev kood tehakse faili Program.cs.

Step 1) Massiivi deklareerimine – esimene samm on massiivi deklareerimine. Vaatame, kuidas saame selle järgmise koodinäite abil saavutada.

Massiivid C# keeles

Code Selgitus:-

  1. Esimene osa on andmetüüp. See määrab massiivis kasutatavate elementide tüübi. Nii et meie puhul loome täisarvude massiivi.
  2. Teine osa [ ], mis määrab massiivi järjestuse. (Aste on kohatäide, mis määrab massiivi sisaldavate elementide arvu)
  3. Järgmine on massiivi nimi, mis meie puhul on "väärtused". Pange tähele, et näete rohelist särtsuvat allajoont, ärge selle pärast muretsege. See on lihtsalt .Net, mis ütleb, et olete massiivi deklareerinud, kuid ei kasuta seda kuskil.

Step 2) Järgmine samm on massiivi lähtestamine. Siin täpsustame massiivi säilitatavate väärtuste arvu. Samuti määrame massiivi igale elemendile väärtused.

Massiivid C# keeles

Code Selgitus:-

  1. Esiteks määrame massiivi mahutavate elementide arvu 3-le. Seega nurksulgudes ütleme, et massiiv mahutab 3 elementi.
  2. Seejärel omistame igale massiivi elemendile väärtused. Seda saame teha, määrates muutuja nime ja indeksi positsiooni massiivis. Seega väärtused[0] tähendab, et salvestame väärtuse massiivi esimesse positsiooni. Sarnaselt teisele positsioonile juurdepääsuks kasutame tähistust väärtused[1] jne.

märkused: – Massiivides algab indeksi asukoht nullist.

Step 3) Kuvame nüüd konsoolis massiivi üksikud elemendid. Selle saavutamiseks lisame alloleva koodi.

Massiivid C# keeles

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

See on lihtne osa, kus me lihtsalt kasutame meetodit Console.WriteLine, et saata elemendi iga väärtus konsooli.

Pange tähele, et jällegi pääseme igale elemendile juurde massiivi muutuja nime ja indeksi positsiooni abil.

Kui ülaltoodud kood on õigesti sisestatud ja programm käivitatud, kuvatakse järgmine väljund.

Väljund:

Massiivid C# keeles

Väljundist näete kõiki konsoolis kuvatava massiivi väärtusi.

Kuidas foreach funktsiooni abil C# massiivi läbi tsüklida

Iga elemendi indeksi järgi lugemine toimib, aga muutub tüütuks, kui massiiv sisaldab palju väärtusi. Foreach-tsükkel pakub selgema viisi massiivi iga elemendi järjestikuseks külastamiseks ilma tracLoo ise indeksmuutuja.

Foreach-lause võtab massiivist iga elemendi ükshaaval ja kopeerib selle tsükli muutujasse. Seejärel kasutate seda muutujat tsükli sisus. Kuna tsükkel peatub automaatselt viimase elemendi juures, välistab foreach massiivi lõpust kaugemale lugemise ohu.

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

Ülaltoodud näites deklareeritakse ja initsialiseeritakse kolmest täisarvust koosnev massiiv ning seejärel käib see foreach-iga läbi. Igal läbimisel muutuja kirje saab järgmise väärtuse ja Console.WriteLine prindib selle välja. Väljundiks on numbrid 1, 2 ja 3 eraldi ridadel.

Olulised punktid foreach funktsiooni kasutamisel massiivide puhul:

  • Tsüklimuutuja on kirjutuskaitstud, seega sobib foreach kõige paremini väärtuste lugemiseks, mitte nende kohapealseks muutmiseks.
  • Elementide muutmiseks vaatamise ajalping, kasuta selle asemel indeksiga for-tsüklit.
  • foreach töötab ühemõõtmeliste massiivide, mitmemõõtmeliste massiivide ja mis tahes iteratsiooni toetavate kollektsioonidega.

C# mitmemõõtmelised massiivid

Siiani näidatud massiivid on ühemõõtmelised, mis tähendab, et nad salvestavad lihtsa väärtuste loendi. C# toetab ka mitmemõõtmelisi massiive, mis paigutavad elemendid ridade ja veergude ruudustikku. Kahemõõtmeline massiiv on kõige levinum vorm ja sobib selliste andmete jaoks nagu maatriksid, mängulauad ja tabelid.

Kahemõõtmelise massiivi deklareerimiseks asetatakse nurksulgudesse koma. Iga täiendav koma lisab uue mõõtme, seega int[,] on kahemõõtmeline ja int[,,] on kolmemõõtmeline. Elementidele jõutakse seejärel ühe indeksiga mõõtme kohta.

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

Siin sisaldab massiivimaatriks kahte rida ja kahte veergu. Element matrix[0, 0] tagastab 1 ja matrix[1, 1] tagastab 4. Mõõtmete arv fikseeritakse massiivi deklareerimisel, samas kui iga mõõtme suurus määratakse massiivi loomisel.

C# sakilised massiivid

Sakiline massiiv on massiiv, mille elemendid on ise massiivid. Erinevalt ristkülikukujulisest mitmemõõtmelisest massiivist võib igal sisemisel massiivil olla erinev pikkus, mistõttu sakilist massiivi nimetatakse sageli massiivide massiiviks. See paindlikkus on kasulik, kui read sisaldavad loomulikult erinevat arvu väärtusi.

Deklareerid sakilise massiivi kahe nurksulgude komplektiga ja seejärel lood iga sisemise massiivi eraldi. Järgmises näites luuakse sakiline massiiv, kus esimeses reas on kolm väärtust ja teises reas kaks.

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

Avaldis jagged[0][2] loeb esimese rea kolmandat elementi, mis on 3, ja jagged[1][1] loeb teise rea teist elementi, mis on 5. Kuna iga rida on eraldi massiiv, kasutavad sakilised massiivid mälu tõhusalt, kui rea pikkus varieerub, kuigi iga sisemise massiivi initsialiseerimiseks on vaja lisasammu.

KKK

Omadus Length tagastab C# massiivi elementide koguarvu. Näiteks values.Length annab kolmeelemendilise massiivi korral väärtuseks 3. Mitmemõõtmeliste massiivide korral tagastab GetLength(dimension) iga konkreetse mõõtme suuruse.

AC# massiivil on loomisel fikseeritud suurus, samas kui loend (List) kasvab ja kahaneb dünaamiliselt. Massiivid on fikseeritud andmete korral kiiremad ja kasutavad vähem üldkulu, samas kui loend sobib kogumitele, mille elementide arv käitusajal muutub.

Standardne C# massiiv salvestab ühe deklareeritud tüübi elemente, seega tüüpide segamine pole lubatud. Erinevate tüüpide hoidmiseks deklareerige object[] massiiv või kasutage kollektsiooni nagu ArrayList, kuigi mõlemad ohverdavad kompileerimisaegse tüübiohutuse.

Staatiline meetod Array.Sort järjestab C# massiivi elemendid kasvavas järjekorras. Edastage massiiv funktsioonile Array.Sort(values) ja kasutage meetodit Array.Reverse seejärel kahanevas järjekorras. Sorteerimine toimib numbrite, stringide ja muude võrreldavate tüüpide puhul.

Array.Copy dubleerib ühest massiivist elementide vahemiku teise, samas kui Clone meetod loob kogu massiivist pealiskaudse koopia. Ühe massiivimuutuja määramine teisele kopeerib ainult viite, mitte aluselemente.

IndexOutOfRangeException tekib siis, kui kood pääseb juurde massiivi positsioonile, mida pole olemas, näiteks kolmeelemendilise massiivi väärtusele [5]. Kuna C# massiivid on nullipõhised, algavad kehtivad indeksid väärtusest 0 kuni pikkuseni miinus üks. Indeks tuleb alati esmalt valideerida.

Jah. GitHub Copilot soovitab massiivide deklareerimist, initsialiseerimist ja tsükli loogikat Visual Studio kommentaari või meetodi nime põhjal. VS Code. RevVaadake iga soovitust õige suuruse ja indeksipiiride osas, kuna Copilot võib tekitada ühe võrra ebatäpseid ja vahemikust väljas olevaid vigu.

ML.NET esitab tunnusvektoreid ja mudeli sisendeid C# massiividena, tavaliselt float[] massiividena. Treeningandmed laaditakse massiividesse või vahemikesse ning ennustused tagastavad skooride massiive. Massiivide fikseeritud suurus ja kiire indekseerimine muudavad need masinõppe torujuhtmete jaoks tõhusaks.

Võta see postitus kokku järgmiselt: