Øvelse – Kom i gang med grunnleggende matrise
- 19 minutter
Matriser kan brukes til å lagre flere verdier av samme type i én enkelt variabel. Verdiene som er lagret i en matrise, er generelt relatert. En liste over elevnavn kan for eksempel lagres i en strengmatrise med navnet students.
Arbeidet ditt i sikkerhetsavdelingen fokuserer på å finne et mønster for falske bestillinger. Du vil at koden skal se gjennom tidligere kundeordrer og identifisere indikatorer som er knyttet til falske ordrer. Firmaet ditt håper markørene kan brukes til å identifisere potensielle falske innkjøpsordrer i fremtiden før de behandles. Siden du ikke alltid vet på forhånd hvor mange ordrer du må se gjennom, kan du ikke opprette individuelle variabler for å holde hver ordre-ID. Hvordan kan du opprette en datastruktur for å inneholde flere relaterte verdier?
I denne øvelsen bruker du matriser til å lagre og analysere en samling ordre-ID-er.
Hva er en matrise?
En matrise er en samling individuelle dataelementer som er tilgjengelige via ett enkelt variabelnavn. Du bruker en nullbasert numerisk indeks for å få tilgang til hvert element i en matrise. Med matriser kan du opprette en samling dataverdier som deler et felles formål eller egenskaper under ett enkelt variabelnavn for enklere behandling.
Deklarer matriser og tilgang til matriseelementer
En matrise er en spesiell type variabel som kan inneholde flere verdier av samme datatype. Deklarasjonssyntaksen er litt annerledes for en matrise fordi du må angi både datatypen og størrelsen på matrisen.
Klargjøre kodemiljøet
Denne modulen inneholder aktiviteter som veileder deg gjennom prosessen med å bygge og kjøre eksempelkode. Du oppfordres til å fullføre disse aktivitetene ved hjelp av Visual Studio Code som utviklingsmiljø. Bruk av Visual Studio Code for disse aktivitetene hjelper deg med å bli mer komfortabel med å skrive og kjøre kode i et utviklermiljø som brukes av profesjonelle over hele verden.
Åpne Visual Studio Code.
Du kan bruke Start-menyen i Windows (eller tilsvarende ressurs for et annet operativsystem) til å åpne Visual Studio Code.
Velg Åpne mappe på Visual Studio Code File-menyen.
Gå til Windows-skrivebordsmappen i dialogboksen Åpne mappe .
Hvis du har en annen mappeplassering der du beholder kodeprosjekter, kan du bruke denne mappeplasseringen i stedet. For denne opplæringen er det viktig å ha en plassering som er enkel å finne og huske.
Velg Velg mappe i dialogboksen Åpne mappe.
Hvis du ser en sikkerhetsdialogboks som spør om du stoler på forfatterne, velger du Ja.
Velg Ny terminal på Visual Studio Code Terminal-menyen.
Legg merke til at en ledetekst i Terminal-panelet viser mappebanen for gjeldende mappe. For eksempel:
C:\Users\someuser\Desktop>Merk deg
Hvis du arbeider på din egen PC i stedet for i en sandkasse eller et vertsbasert miljø, og du har fullført andre Microsoft Learn-moduler i denne C#-serien, har du kanskje allerede opprettet en prosjektmappe for kodeeksempler. Hvis dette er tilfellet, kan du hoppe over neste trinn, som brukes til å opprette en konsollapp i TestProject-mappen.
Hvis du vil opprette et nytt konsollprogram i en angitt mappe i terminalkommandoen, skriver du inn følgende ledetekst:
dotnet new console -o ./CsharpProjects/TestProjectDenne .NET CLI-kommandoen bruker en .NET-programmal til å opprette et nytt C#-konsollprogramprosjekt i den angitte mappeplasseringen. Kommandoen oppretter mappene CsharpProjects og TestProject for deg, og bruker TestProject som navnet på
.csprojfilen.Hvis det vises en melding som forteller deg at filene allerede finnes, fortsetter du med de neste trinnene. Du bruker de eksisterende prosjektfilene på nytt.
Utvid CsharpProjects-mappen i EXPLORER-visningen.
Du skal se TestProject-mappen og to filer, en C#-programfil med navnet Program.cs og en C#-prosjektfil kalt TestProject.csproj.
Velg Åpne mappe på Visual Studio Code File-menyen.
Velg CsharpProjects-mappen i dialogboksen Åpne mappe, og velg deretter Velg mappe.
Utvid TestProject-mappen i UTFORSKER-visningen, og velg deretter Program.cs.
Slett eksisterende kodelinjer.
Du skal bruke dette C#-konsollprosjektet til å opprette, bygge og kjøre kodeeksempler under denne modulen.
Lukk Terminal-panelet.
Deklarer en ny matrise
Hvis du vil deklarere en ny matrise med strenger som kan inneholde tre elementer, skriver du inn følgende kode:
string[] fraudulentOrderIDs = new string[3];Ta deg tid til å undersøke koden.
Operatoren
newoppretter en ny forekomst av en matrise i datamaskinens minne som kan inneholde tre strengverdier. Hvis du vil ha mer informasjon omnewnøkkelordet, kan du se modulen «Anropsmetoder fra .NET-klassebiblioteket ved hjelp av C#».Legg merke til at det første settet med hakeparenteser
[]bare forteller kompilatoren at variabelen med navnetfraudulentOrderIDser en matrise, men det andre settet med hakeparenteser[3]angir antall elementer som matrisen kan inneholde.Merk deg
Dette eksemplet viser hvordan du deklarerer en matrise med strenger, men du kan opprette en matrise av alle datatyper, inkludert primitiver som
intogbooli tillegg til mer komplekse datatyper som klasser. Dette eksemplet bruker enkelheten i strenger til å minimere antall nye ideer du trenger å forstå når du kommer i gang.
Tilordne verdier til elementer i en matrise
Nå har du deklarert en matrise med strenger, men hvert element i matrisen er tom. Hvis du vil ha tilgang til et element i en matrise, bruker du en numerisk nullbasert indeks i hakeparenteser. Du kan tilordne en verdi til et matriseelement = ved hjelp av som om den var en vanlig variabel.
Hvis du vil tilordne ordre-ID-verdier til
fraudulentOrderIDsmatrisen, oppdaterer du koden på følgende måte:string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789";Ta deg tid til å undersøke koden.
Legg merke til at du bruker navnet på matrisen til å få tilgang til matriseelementer. Hvert element åpnes individuelt ved å angi nullbasert indeksnummer i hakeparentesene.
Siden matrisen er deklarert som en streng, må verdiene du tilordner også være strenger. I dette scenarioet tilordner du ordre-ID-er til elementene i matrisen.
Forsøk på å bruke en indeks som er utenfor grensene til matrisen
Det virker kanskje ikke intuitivt i begynnelsen, men det er viktig å huske at du deklarerer antall elementer i matrisen. Du får imidlertid tilgang til hvert element i matrisen som starter med null. Hvis du vil ha tilgang til det andre elementet i matrisen, bruker du indeks 1.
Det er vanlig at nybegynnere glemmer at matriser er nullbaserte og prøver å få tilgang til et element i matrisen som ikke finnes. Hvis du gjør denne feilen, oppstår det et kjøretidsunntak som informerer deg om at du forsøkte å få tilgang til et element som er utenfor grensen til matrisen.
Hvis du vil «bryte» programmet med vilje, prøver du å få tilgang til et fjerde element i matrisen ved hjelp av 3indeksverdien .
Skriv inn følgende kodelinje nederst i kodefilen:
fraudulentOrderIDs[3] = "D000";Kontroller at koden samsvarer med dette eksemplet:
string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; fraudulentOrderIDs[3] = "D000";Velg Lagre på Visual Studio Code File-menyen.
Hvis du vil åpne en terminal i TestProject-mappeplasseringen i UTFORSKER-visningen, høyreklikker du TestProject, og deretter velger du Åpne i integrert terminal.
Et terminalpanel skal åpnes, og bør inneholde en ledetekst som viser at terminalen er åpen for plasseringen av TestProject-mappen .
Skriv inn
dotnet buildog trykk enter ved terminalkommandoledeteksten for å kompilere koden.Du skal kunne se følgende melding:
Build succeeded. 0 Warning(s) 0 Error(s)Skriv inn
dotnet runog trykk enter ved kommandoledeteksten terminalen for å kjøre koden.Når du kjører appen, får du følgende feilmelding om kjøretid:
Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array. at Program.<Main>$(String[] args) in C:\Users\someuser\Desktop\CsharpProjects\TestProject\Program.cs:line 6Legg merke til følgende deler av feilen:
- Feilmelding:
System.IndexOutOfRangeException: Index was outside the bounds of the array. - Feilplassering:
Program.cs:line 6
- Feilmelding:
Kommentere linjen som genererte kjøretidsfeilen.
// fraudulentOrderIDs[3] = "D000";
Du har sett hvordan du tilordner en verdi til et matriseelement. Se nå på hvordan du får tilgang til en verdi som lagres i et matriseelement.
Hente verdier fra elementer i en matrise
Tilgang til verdien for et matriseelement fungerer på samme måte som å tilordne en verdi til et matriseelement. Du angir bare indeksen for elementet du vil hente verdien for.
Hvis du vil skrive verdien for hver falske ordre-ID, oppdaterer du koden på følgende måte:
string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; // fraudulentOrderIDs[3] = "D000"; Console.WriteLine($"First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"Second: {fraudulentOrderIDs[1]}"); Console.WriteLine($"Third: {fraudulentOrderIDs[2]}");Velg Lagre på Visual Studio Code File-menyen.
Hvis du vil åpne en terminal i TestProject-mappeplasseringen i UTFORSKER-visningen, høyreklikker du TestProject, og deretter velger du Åpne i integrert terminal.
Skriv inn
dotnet runog trykk deretter ENTER i terminalkommandoen.Du skal kunne se følgende melding:
First: A123 Second: B456 Third: C789
Tilordne verdien for en matrise på nytt
Elementene i en matrise er akkurat som alle andre variabelverdier. Du kan tilordne, hente og tilordne en verdi på nytt til hvert element i matrisen.
Hvis du vil tilordne og skrive ut verdien for det første matriseelementet på slutten av kodefilen, skriver du inn følgende kode:
fraudulentOrderIDs[0] = "F000"; Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}");Kontroller at koden samsvarer med følgende eksempel:
string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; // fraudulentOrderIDs[3] = "D000"; Console.WriteLine($"First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"Second: {fraudulentOrderIDs[1]}"); Console.WriteLine($"Third: {fraudulentOrderIDs[2]}"); fraudulentOrderIDs[0] = "F000"; Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}");Velg Lagre på Visual Studio Code File-menyen.
Hvis du vil åpne en terminal i TestProject-mappeplasseringen i UTFORSKER-visningen, høyreklikker du TestProject, og deretter velger du Åpne i integrert terminal.
Skriv inn
dotnet runog trykk deretter ENTER i terminalkommandoen.Du skal kunne se følgende melding:
First: A123 Second: B456 Third: C789 Reassign First: F000
Initialisere en matrise
Du kan initialisere en matrise under deklarasjonen på samme måte som med en vanlig variabel.
Kommentere linjene der du deklarerer variabelen
fraudulentOrderIDs.Du kan bruke en flerlinjet kommentar (
/* ... */) til å kommentere deklarasjonen avfraudulentOrderIDsog linjene som brukes til å tilordne verdier til matriseelementene.Hvis du vil deklarere matrisen og initialisere verdiene i én enkelt setning, angir du følgende kode:
string[] fraudulentOrderIDs = [ "A123", "B456", "C789" ];Dette eksempelet bruker Collection-uttrykkssyntaksen , som ble introdusert i C# 12 og støttes i .NET 10.
Du kan også se en eldre syntaks som brukes til å initialisere en matrise.
string[] fraudulentOrderIDs = { "A123", "B456", "C789" };Legg merke til at denne eldre syntaksen bruker klammeparenteser
{}til å omslutte verdiene i matrisen. Begge syntaksene er gyldige.Merk deg
Du kan se en kombinasjon av den eldre syntaksen og syntaksen for samlingsuttrykket som brukes i denne opplæringen.
Kontroller at koden samsvarer med følgende eksempel:
/* string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; // fraudulentOrderIDs[3] = "D000"; */ string[] fraudulentOrderIDs = [ "A123", "B456", "C789" ]; Console.WriteLine($"First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"Second: {fraudulentOrderIDs[1]}"); Console.WriteLine($"Third: {fraudulentOrderIDs[2]}"); fraudulentOrderIDs[0] = "F000"; Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}");Ta deg tid til å undersøke deklarasjonserklæringen.
Legg merke til at denne syntaksen er både kompakt og enkel å lese. Når du kjører programmet, bør det ikke være noen endring i utdataene.
Velg Lagre på Visual Studio Code File-menyen.
Hvis du vil åpne en terminal i TestProject-mappeplasseringen i UTFORSKER-visningen, høyreklikker du TestProject, og deretter velger du Åpne i integrert terminal.
Skriv inn
dotnet runog trykk deretter ENTER i terminalkommandoen.Du bør se den samme meldingen som før:
First: A123 Second: B456 Third: C789 Reassign First: F000
Bruke Egenskapen Length (Lengde) for en matrise
Avhengig av hvordan matrisen opprettes, vet du kanskje ikke på forhånd hvor mange elementer en matrise inneholder. Hvis du vil bestemme størrelsen på en matrise, kan du bruke egenskapen Length .
Merk deg
Egenskapen Length for en matrise er ikke nullbasert.
Hvis du vil rapportere antall falske bestillinger på slutten av kodefilen, angir du følgende kode:
Console.WriteLine($"There are {fraudulentOrderIDs.Length} fraudulent orders to process.");Denne koden bruker matrisens
Lengthegenskap, et heltall, til å returnere antall elementer i matrisenfraudulentOrderIDs.Kontroller at koden samsvarer med dette eksemplet:
/* string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; // fraudulentOrderIDs[3] = "D000"; */ string[] fraudulentOrderIDs = [ "A123", "B456", "C789" ]; Console.WriteLine($"First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"Second: {fraudulentOrderIDs[1]}"); Console.WriteLine($"Third: {fraudulentOrderIDs[2]}"); fraudulentOrderIDs[0] = "F000"; Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}"); Console.WriteLine($"There are {fraudulentOrderIDs.Length} fraudulent orders to process.");Lagre endringene i Program.cs-filen , og kjør deretter programmet.
Du skal se følgende utdata:
First: A123 Second: B456 Third: C789 Reassign First: F000 There are 3 fraudulent orders to process.
Oppsummering
Her er de viktigste tingene å huske når du arbeider med matriser:
- En matrise er en spesiell variabel som inneholder en samling relaterte dataelementer.
- Du bør huske det grunnleggende formatet for en matrisevariabeldeklarasjon.
- Få tilgang til hvert element i en matrise for å angi eller hente verdiene ved hjelp av en nullbasert indeks i hakeparenteser.
- Hvis du prøver å få tilgang til en indeks utenfor grensen til matrisen, får du et kjøretidsunntak.
- Egenskapen
Lengthgir deg en programmatisk måte å bestemme antall elementer i en matrise på.