Övning – Kom igång med grundläggande matriser
- 19 minuter
Matriser kan användas för att lagra flera värden av samma typ i en enda variabel. De värden som lagras i en matris är vanligtvis relaterade. En lista med elevnamn kan till exempel lagras i en strängmatris med namnet students.
Ditt arbete på säkerhetsavdelningen fokuserar på att hitta ett mönster för bedrägliga beställningar. Du vill att koden ska granska tidigare kundbeställningar och identifiera markörer som är associerade med bedrägliga beställningar. Företaget hoppas att markörer kan användas för att identifiera potentiella bedrägliga inköpsorder i framtiden innan de bearbetas. Eftersom du inte alltid vet i förväg hur många beställningar du behöver granska kan du inte skapa enskilda variabler för varje order-ID. Hur kan du skapa en datastruktur för att lagra flera relaterade värden?
I den här övningen använder du matriser för att lagra och analysera en samling order-ID:er.
Vad är en matris?
En matris är en samling enskilda dataelement som är tillgängliga via ett enda variabelnamn. Du använder ett numeriskt index som börjar på noll för att komma åt varje element i matrisen. Med matriser kan du skapa en samling datavärden som delar ett gemensamt syfte eller egenskaper under ett enda variabelnamn för enklare bearbetning.
Deklarera matriser och komma åt matriselement
En matris är en särskild typ av variabel som kan innehålla flera värden av samma datatyp. Deklarationssyntaxen skiljer sig något åt för en matris eftersom du måste ange både datatypen och matrisens storlek.
Förbereda din kodningsmiljö
Den här modulen innehåller aktiviteter som vägleder dig genom processen att skapa och köra exempelkod. Du uppmanas att slutföra dessa aktiviteter med Visual Studio Code som utvecklingsmiljö. Genom att använda Visual Studio Code för dessa aktiviteter kan du bli mer bekväm med att skriva och köra kod i en utvecklarmiljö som används av proffs över hela världen.
Öppna Visual Studio Code.
Du kan använda Windows Start-menyn (eller motsvarande resurs för ett annat operativsystem) för att öppna Visual Studio Code.
På menyn Visual Studio Code-fil väljer du Öppna mapp.
I dialogrutan Öppna mapp navigerar du till mappen Windows Desktop.
Om du har en annan mappplats där du behåller kodprojekt kan du använda den mappplatsen i stället. För den här utbildningen är det viktigt att ha en plats som är lätt att hitta och komma ihåg.
I dialogrutan Öppna mapp väljer du Välj mapp.
Om du ser en säkerhetsdialogruta som frågar om du litar på författarna väljer du Ja.
Välj Ny terminal på visual Studio Code-terminalmenyn.
Observera att en kommandotolk i terminalpanelen visar mappsökvägen för den aktuella mappen. Till exempel:
C:\Users\someuser\Desktop>Kommentar
Om du arbetar på din egen dator i stället för i en sandbox-miljö eller en värdbaserad miljö och du har slutfört andra Microsoft Learn-moduler i den här C#-serien kanske du redan har skapat en projektmapp för kodexempel. I så fall kan du hoppa över nästa steg, som används för att skapa en konsolapp i mappen TestProject.
I terminalkommandot anger du följande fråga för att skapa ett nytt konsolprogram i en angiven mapp:
dotnet new console -o ./CsharpProjects/TestProjectDet här .NET CLI-kommandot använder en .NET-programmall för att skapa ett nytt C#-konsolprogramprojekt på den angivna mappplatsen. Kommandot skapar mapparna CsharpProjects och TestProject åt dig och använder TestProject som namnet på filen
.csproj.Om ett meddelande visas som talar om för dig att filerna redan finns fortsätter du med nästa steg. Du återanvänder de befintliga projektfilerna.
I utforskarvyn expanderar du mappen CsharpProjects .
Du bör se mappen TestProject och två filer, en C#-programfil med namnet Program.cs och en C#-projektfil med namnet TestProject.csproj.
På menyn Visual Studio Code-fil väljer du Öppna mapp.
I dialogrutan Öppna mapp väljer du mappen CsharpProjects och väljer sedan Välj mapp.
I explorer-vyn expanderar du mappen TestProject och väljer sedan Program.cs.
Ta bort de befintliga kodraderna.
Du kommer att använda det här C#-konsolprojektet för att skapa, skapa och köra kodexempel under den här modulen.
Stäng terminalpanelen.
Deklarera en ny matris
Om du vill deklarera en ny matris med strängar som kan innehålla tre element anger du följande kod:
string[] fraudulentOrderIDs = new string[3];Det tar en minut att undersöka koden.
Operatorn
newskapar en ny instans av en matris i datorns minne som kan innehålla tre strängvärden. Mer information om nyckelordetnewfinns i modulen ”Call methods from the .NET Class Library using C#”.Observera att den första uppsättningen hakparenteser
[]bara talar om för kompilatorn att variabeln med namnetfraudulentOrderIDsär en matris, men den andra uppsättningen hakparenteser[3]anger antalet element som matrisen kan innehålla.Kommentar
Det här exemplet visar hur du deklarerar en matris med strängar, men du kan skapa en matris med varje datatyp, inklusive primitiver som
intochboolsamt mer komplexa datatyper som klasser. I det här exemplet används för enkelhetens skull strängar för att minimera mängden ny information som du behöver lära dig nu när du precis har börjat.
Tilldela värden till element i en matris
Nu har du deklarerat en matris med strängar, men varje element i matrisen är tomt. För att komma åt ett element i en matris använder vi ett index som börjar på noll inne i hakparenteserna. Du kan tilldela ett värde till ett matriselement med hjälp av som = om det vore en vanlig variabel.
Om du vill tilldela order-ID-värden till matrisen
fraudulentOrderIDsuppdaterar du koden på följande sätt:string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789";Det tar en minut att undersöka koden.
Observera att du använder namnet på matrisen för att komma åt matriselement. Varje element nås individuellt genom att ange nollbaserat indexnummer inom hakparenteserna.
Eftersom matrisen deklareras som en sträng måste de värden som du tilldelar också vara strängar. I det här scenariot tilldelar du order-ID:t till elementen i matrisen.
Försök att använda ett index som ligger utanför matrisens gränser
Det kanske inte verkar intuitivt först, men det är viktigt att komma ihåg att du deklarerar antalet element i matrisen. Du kommer dock åt varje element i matrisen som börjar med noll. För att komma åt det andra objektet i matrisen använder du index .1
Det är vanligt att nybörjare glömmer att matriser är nollbaserade och försöker komma åt ett element i matrisen som inte finns. Om du gör det här misstaget inträffar ett körningsundundanstag som informerar dig om att du försökte komma åt ett element som ligger utanför matrisens gräns.
Om du avsiktligt vill "bryta" programmet försöker du komma åt ett fjärde element i matrisen med hjälp av 3indexvärdet .
Längst ned i kodfilen anger du följande kodrad:
fraudulentOrderIDs[3] = "D000";Kontrollera att koden matchar det här exemplet:
string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; fraudulentOrderIDs[3] = "D000";På menyn Visual Studio Code-fil väljer du Spara.
Högerklicka på TestProject för att öppna en terminal på mappen TestProject och välj sedan Öppna i integrerad terminal.
En terminalpanel bör öppnas och bör innehålla en kommandotolk som visar att terminalen är öppen för mappen TestProject .
I terminalkommandot skriver du och trycker på Retur för att kompilera koden
dotnet build.Du bör se följande meddelande:
Build succeeded. 0 Warning(s) 0 Error(s)I terminalkommandot skriver du och trycker på Retur för att köra koden
dotnet run.När du kör appen får du följande körningsfel:
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 6Observera följande delar av felet:
- Felmeddelande:
System.IndexOutOfRangeException: Index was outside the bounds of the array. - Felplats:
Program.cs:line 6
- Felmeddelande:
Kommentera ut raden som genererade körningsfelet.
// fraudulentOrderIDs[3] = "D000";
Du har sett hur du tilldelar ett värde till ett matriselement. Titta nu på hur du kommer åt ett värde som lagras i ett matriselement.
Hämta värden från element i en matris
Att komma åt värdet för ett matriselement fungerar på samma sätt som att tilldela ett värde till ett matriselement. Du anger bara indexet för det element vars värde du vill hämta.
Om du vill skriva värdet för varje bedrägligt order-ID uppdaterar du koden på följande sätt:
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]}");På menyn Visual Studio Code-fil väljer du Spara.
Högerklicka på TestProject för att öppna en terminal på mappen TestProject och välj sedan Öppna i integrerad terminal.
I kommandotolken i Terminal skriver du
dotnet runoch trycker sedan på Retur.Du bör se följande meddelande:
First: A123 Second: B456 Third: C789
Tilldela om värdet för en matris
Elementen i en matris är precis som andra variabelvärden. Du kan tilldela, hämta och tilldela om ett värde till varje element i matrisen.
Ange följande kod för att tilldela om och sedan skriva ut värdet för det första matriselementet i slutet av kodfilen:
fraudulentOrderIDs[0] = "F000"; Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}");Kontrollera att koden matchar följande exempel:
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]}");På menyn Visual Studio Code-fil väljer du Spara.
Högerklicka på TestProject för att öppna en terminal på mappen TestProject och välj sedan Öppna i integrerad terminal.
I kommandotolken i Terminal skriver du
dotnet runoch trycker sedan på Retur.Du bör se följande meddelande:
First: A123 Second: B456 Third: C789 Reassign First: F000
Initiera en matris
Du kan initiera en matris under deklarationen precis som med en vanlig variabel.
Kommentera ut raderna där du deklarerar variabeln
fraudulentOrderIDs.Du kan använda en kommentar med flera rader (
/* ... */) för att kommentera ut deklarationen förfraudulentOrderIDsoch de rader som används för att tilldela värden till matriselementen.Om du vill deklarera matrisen och initiera värden i en enda instruktion anger du följande kod:
string[] fraudulentOrderIDs = [ "A123", "B456", "C789" ];I det här exemplet används syntaxen för samlingsuttryck , som introducerades i C# 12 och stöds i .NET 10.
Du kan också se en äldre syntax som används för att initiera en matris.
string[] fraudulentOrderIDs = { "A123", "B456", "C789" };Observera att den här äldre syntaxen använder klammerparenteser
{}för att omsluta matrisens värden. Båda syntaxerna är giltiga.Kommentar
Du kan se en kombination av den äldre syntaxen och samlingsuttryckssyntaxen som används i den här träningen.
Kontrollera att koden matchar följande exempel:
/* 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 en minut att undersöka deklarationssatsen.
Observera att den här syntaxen är både kompakt och lättläst. När du kör programmet bör utdata inte ändras.
På menyn Visual Studio Code-fil väljer du Spara.
Högerklicka på TestProject för att öppna en terminal på mappen TestProject och välj sedan Öppna i integrerad terminal.
I kommandotolken i Terminal skriver du
dotnet runoch trycker sedan på Retur.Du bör se samma meddelande som tidigare:
First: A123 Second: B456 Third: C789 Reassign First: F000
Använda egenskapen Längd för en matris
Beroende på hur matrisen skapas kanske du inte vet i förväg hur många element en matris innehåller. Du kan använda egenskapen Length för att ta reda på storleken på en matris.
Kommentar
Egenskapen Length för en matris är inte nollbaserad.
Ange följande kod för att rapportera antalet bedrägliga beställningar i slutet av kodfilen:
Console.WriteLine($"There are {fraudulentOrderIDs.Length} fraudulent orders to process.");Den här koden använder matrisens
Lengthegenskap, ett heltal, för att returnera antalet element i matrisenfraudulentOrderIDs.Kontrollera att koden matchar det här exemplet:
/* 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.");Spara ändringarna i filen Program.cs och kör sedan programmet.
Du bör se följande utdata:
First: A123 Second: B456 Third: C789 Reassign First: F000 There are 3 fraudulent orders to process.
Sammanfattning
Här är de viktigaste sakerna att komma ihåg när du arbetar med matriser:
- En matris är en särskild variabel som innehåller en samling relaterade dataelement.
- Du bör lägga det grundläggande formatet för en matrisdeklaration på minnet.
- Du kommer åt varje element i en matris för att ange eller hämta dess värden med hjälp av ett index inom hakparentes som börjar på noll.
- Om du försöker komma åt ett index utanför matrisens gräns får du ett körningsfel.
- Med egenskapen
Lengthkan du ta reda på antalet element i en matris programmatiskt.