Oefening: aan de slag met basisbeginselen van matrices
- 19 minuten
Matrices kunnen worden gebruikt om meerdere waarden van hetzelfde type in één variabele op te slaan. De waarden die in een matrix zijn opgeslagen, zijn over het algemeen gerelateerd. Een lijst met namen van leerlingen/studenten kan bijvoorbeeld worden opgeslagen in een tekenreeksmatrix met de naam students.
Uw werk op de beveiligingsafdeling is gericht op het vinden van een patroon voor frauduleuze orders. U wilt dat uw code eerdere klantorders controleert en markeringen identificeert die zijn gekoppeld aan frauduleuze orders. Uw bedrijf hoopt dat de markeringen kunnen worden gebruikt om potentiële frauduleuze inkooporders in de toekomst te identificeren voordat ze worden verwerkt. Aangezien u niet altijd van tevoren weet hoeveel orders u moet controleren, kunt u geen afzonderlijke variabelen maken om elke order-id op te nemen. Hoe kunt u een gegevensstructuur maken voor het opslaan van meerdere gerelateerde waarden?
In deze oefening gebruikt u matrices om een verzameling order-id's op te slaan en te analyseren.
Wat is een matrix?
Een matrix is een verzameling afzonderlijke gegevenselementen die toegankelijk zijn via één variabelenaam. U gebruikt een op nul gebaseerde numerieke index voor toegang tot elk element van een matrix. Met matrices kunt u een verzameling gegevenswaarden maken die een gemeenschappelijk doel of kenmerken delen onder één variabelenaam voor eenvoudigere verwerking.
Matrices declareren en toegang krijgen tot matrixelementen
Een matrix is een speciaal type variabele waardoor meerdere waarden van hetzelfde gegevenstype kunnen worden opgeslagen. De syntaxis van de declaratie verschilt enigszins voor een matrix omdat u zowel het gegevenstype als de grootte van de matrix moet opgeven.
Uw coderingsomgeving voorbereiden
Deze module bevat activiteiten die u begeleiden bij het bouwen en uitvoeren van voorbeeldcode. U wordt aangeraden deze activiteiten uit te voeren met Behulp van Visual Studio Code als uw ontwikkelomgeving. Het gebruik van Visual Studio Code voor deze activiteiten helpt u om comfortabeler code te schrijven en uit te voeren in een ontwikkelomgeving die wordt gebruikt door professionals over de hele wereld.
Open Visual Studio Code.
U kunt de Windows-Startmenu (of een equivalente resource voor een ander besturingssysteem) gebruiken om Visual Studio Code te openen.
Selecteer Map openen in het menu Visual Studio Code-bestand.
Navigeer in het dialoogvenster Open Folder naar de Windows Bureaublad-map.
Als u een andere maplocatie hebt waar u codeprojecten bewaart, kunt u die maplocatie gebruiken. Voor deze training is het belangrijk om een locatie te hebben die gemakkelijk te vinden en te onthouden is.
In het dialoogvenster Map openen, selecteer Map selecteren.
Als u een beveiligingsdialoogvenster ziet waarin u wordt gevraagd of u de auteurs vertrouwt, selecteert u Ja.
Selecteer In het menu Visual Studio Code Terminalde optie Nieuwe terminal.
U ziet dat in een opdrachtprompt in het terminalvenster het mappad voor de huidige map wordt weergegeven. Bijvoorbeeld:
C:\Users\someuser\Desktop>Notitie
Als u op uw eigen pc werkt in plaats van in een sandbox of gehoste omgeving en u andere Microsoft Learn-modules in deze C#-serie hebt voltooid, hebt u mogelijk al een projectmap gemaakt voor codevoorbeelden. Als dat het geval is, kunt u de volgende stap overslaan, die wordt gebruikt om een console-app te maken in de map TestProject.
Voer bij de terminalopdrachtprompt de volgende prompt in om een nieuwe consoletoepassing in een opgegeven map te maken:
dotnet new console -o ./CsharpProjects/TestProjectDeze .NET CLI-opdracht maakt gebruik van een .NET-programmasjabloon om een nieuw C#-consoletoepassingsproject te maken op de opgegeven maplocatie. Met de opdracht worden de mappen CsharpProjects en TestProject voor u gemaakt en wordt TestProject gebruikt als de naam van uw
.csprojbestand.Als er een bericht wordt weergegeven waarin wordt aangegeven dat de bestanden al bestaan, gaat u verder met de volgende stappen. U gebruikt de bestaande projectbestanden opnieuw.
Vouw in de EXPLORER-weergave de map CsharpProjects uit .
U ziet de map TestProject en twee bestanden, een C#-programmabestand met de naam Program.cs en een C#-projectbestand met de naam TestProject.csproj.
Selecteer Map openen in het menu Visual Studio Code-bestand.
Selecteer in het dialoogvenster Map openen de map CsharpProjects en klik vervolgens op Map selecteren.
Vouw in de explorer-weergave de map TestProject uit en selecteer Program.cs.
Verwijder de bestaande coderegels.
U gebruikt dit C#-consoleproject om codevoorbeelden te maken, te bouwen en uit te voeren tijdens deze module.
Sluit het deelvenster Terminal.
Een nieuwe matrix declareren
Als u een nieuwe matrix met tekenreeksen wilt declareren die drie elementen kunnen bevatten, voert u de volgende code in:
string[] fraudulentOrderIDs = new string[3];Neem even de tijd om uw code te bekijken.
Met de
new-operator wordt een nieuwe instantie van een matrix in het geheugen van de computer gemaakt waarin drie tekenreekswaarden kunnen worden opgeslagen. Zie de module Methoden aanroepen uit de .NET-klassenbibliotheek met behulp van C# voor meer informatie over hetnew-trefwoord.U ziet dat de eerste set vierkante haken alleen de compiler vertelt dat de variabele met de naam
[]een matrix is, maar de tweede set vierkante hakenfraudulentOrderIDs[3]geeft het aantal elementen aan dat de matrix kan bevatten.Notitie
In dit voorbeeld ziet u hoe u een matrix met tekenreeksen declareert, maar u kunt een matrix maken van elk gegevenstype, inclusief primitieven, zoals
intenboolcomplexere gegevenstypen, zoals klassen. In dit voorbeeld wordt de eenvoud van tekenreeksen gebruikt om het aantal nieuwe ideeën dat u moet kennen voordat u aan de slag gaat, te minimaliseren.
Waarden toewijzen aan elementen van een matrix
Op dit moment hebt u een matrix met tekenreeksen gedeclareerd, maar elk element van de matrix is leeg. Voor toegang tot een element van een matrix gebruikt u een op nul gebaseerde numerieke index in vierkante haken. U kunt een waarde toewijzen aan een matrixelement met behulp van de = functie alsof het een gewone variabele is.
Als u order-id-waarden wilt toewijzen aan uw
fraudulentOrderIDsmatrix, werkt u de code als volgt bij:string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789";Neem even de tijd om uw code te bekijken.
U ziet dat u de naam van de matrix gebruikt om toegang te krijgen tot matrixelementen. Elk element wordt afzonderlijk geopend door het op nul gebaseerde indexnummer binnen de vierkante haken op te geven.
Omdat uw matrix wordt gedeclareerd als een tekenreeks, moeten de waarden die u toewijst ook tekenreeksen zijn. In dit scenario wijst u order-id's toe aan de elementen van de matrix.
Probeer een index te gebruiken die buiten de grenzen van de matrix valt
Het lijkt misschien niet intuïtief in het begin, maar het is belangrijk om te onthouden dat u het aantal elementen in de matrix declareren. U opent echter elk element van de matrix dat begint met nul. Als u dus toegang wilt krijgen tot het tweede item in de matrix, gebruikt u index 1.
Het is gebruikelijk dat beginners vergeten dat matrices op nul zijn gebaseerd en proberen toegang te krijgen tot een element van de matrix die niet bestaat. Als u deze fout maakt, treedt er een runtime-uitzondering op die u informeert dat u probeert toegang te krijgen tot een element dat zich buiten de grens van de matrix bevindt.
Als u uw toepassing opzettelijk wilt 'verbreken', probeert u toegang te krijgen tot een vierde element van uw matrix met behulp van de indexwaarde van 3.
Voer onder aan het codebestand de volgende coderegel in:
fraudulentOrderIDs[3] = "D000";Zorg ervoor dat uw code overeenkomt met dit voorbeeld:
string[] fraudulentOrderIDs = new string[3]; fraudulentOrderIDs[0] = "A123"; fraudulentOrderIDs[1] = "B456"; fraudulentOrderIDs[2] = "C789"; fraudulentOrderIDs[3] = "D000";Selecteer Opslaan in het menu Visual Studio Code File.
Als u in de EXPLORER-weergave een Terminal wilt openen op de locatie van de map TestProject, klikt u met de rechtermuisknop op TestProject en selecteert u Openen in geïntegreerde terminal.
Een terminalvenster moet worden geopend en die een opdrachtprompt bevat die aantoont dat de Terminal op de locatie van uw TestProject-map geopend is.
Typ in de Terminal-opdrachtprompt uw code en druk op Enter om uw code
dotnet buildte compileren.Het volgende bericht wordt weergegeven:
Build succeeded. 0 Warning(s) 0 Error(s)Typ in de Terminal-opdrachtprompt uw code en druk op Enter om uw code
dotnet runuit te voeren.Wanneer u de app uitvoert, wordt het volgende runtime-foutbericht weergegeven:
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 6Let op de volgende onderdelen van de fout:
- Foutbericht:
System.IndexOutOfRangeException: Index was outside the bounds of the array. - Foutlocatie:
Program.cs:line 6
- Foutbericht:
Markeer de regel die de runtimefout heeft gegenereerd als commentaar.
// fraudulentOrderIDs[3] = "D000";
U hebt gezien hoe u een waarde toewijst aan een matrixelement. Bekijk nu hoe u toegang krijgt tot een waarde die wordt opgeslagen in een matrixelement.
Waarden ophalen uit elementen van een matrix
Toegang tot de waarde van een matrixelement werkt op dezelfde manier als het toewijzen van een waarde aan een matrixelement. U geeft alleen de index op van het element waarvan u de waarde wilt ophalen.
Als u de waarde van elke frauduleuze order-id wilt schrijven, werkt u uw code als volgt bij:
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]}");Selecteer Opslaan in het menu Visual Studio Code File.
Als u in de EXPLORER-weergave een Terminal wilt openen op de locatie van de map TestProject, klikt u met de rechtermuisknop op TestProject en selecteert u Openen in geïntegreerde terminal.
Typ en druk op Enter bij de terminalopdrachtprompt
dotnet run.Het volgende bericht wordt weergegeven:
First: A123 Second: B456 Third: C789
De waarde van een matrix opnieuw toewijzen
De elementen van een matrix zijn net als elke andere variabele waarde. U kunt een waarde toewijzen, ophalen en opnieuw toewijzen aan elk element van de matrix.
Voer aan het einde van het codebestand de volgende code in om de waarde van het eerste matrixelement opnieuw toe te voegen en af te drukken:
fraudulentOrderIDs[0] = "F000"; Console.WriteLine($"Reassign First: {fraudulentOrderIDs[0]}");Zorg ervoor dat uw code overeenkomt met het volgende voorbeeld:
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]}");Selecteer Opslaan in het menu Visual Studio Code File.
Als u in de EXPLORER-weergave een Terminal wilt openen op de locatie van de map TestProject, klikt u met de rechtermuisknop op TestProject en selecteert u Openen in geïntegreerde terminal.
Typ en druk op Enter bij de terminalopdrachtprompt
dotnet run.Het volgende bericht wordt weergegeven:
First: A123 Second: B456 Third: C789 Reassign First: F000
Een matrix initialiseren
U kunt een matrix initialiseren tijdens de declaratie, net zoals bij een normale variabele.
Markeer de regels waar u de
fraudulentOrderIDsvariabele declareert.U kunt een opmerking met meerdere regels (
/* ... */) gebruiken om de declaratie uit te voeren enfraudulentOrderIDsde regels die worden gebruikt om waarden toe te wijzen aan de matrixelementen.Als u de matrix wilt declareren en waarden in één instructie wilt initialiseren, voert u de volgende code in:
string[] fraudulentOrderIDs = [ "A123", "B456", "C789" ];In dit voorbeeld wordt de syntaxis van de verzamelingsexpressie gebruikt, die is geïntroduceerd in C# 12 en wordt ondersteund in .NET 10.
Mogelijk ziet u ook een oudere syntaxis die wordt gebruikt om een matrix te initialiseren.
string[] fraudulentOrderIDs = { "A123", "B456", "C789" };In deze oudere syntaxis worden accolades
{}gebruikt om de waarden van de matrix in te sluiten. Beide syntaxisen zijn geldig.Notitie
Mogelijk ziet u een combinatie van de oudere syntaxis en de syntaxis van de verzamelingsexpressie die in deze training wordt gebruikt.
Zorg ervoor dat uw code overeenkomt met het volgende voorbeeld:
/* 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]}");Neem even de tijd om de verklaring te bekijken.
U ziet dat deze syntaxis zowel compact als gemakkelijk te lezen is. Wanneer u de toepassing uitvoert, moet de uitvoer niet worden gewijzigd.
Selecteer Opslaan in het menu Visual Studio Code File.
Als u in de EXPLORER-weergave een Terminal wilt openen op de locatie van de map TestProject, klikt u met de rechtermuisknop op TestProject en selecteert u Openen in geïntegreerde terminal.
Typ en druk op Enter bij de terminalopdrachtprompt
dotnet run.U zou hetzelfde bericht moeten zien als voorheen:
First: A123 Second: B456 Third: C789 Reassign First: F000
De eigenschap Lengte van een matrix gebruiken
Afhankelijk van de manier waarop de matrix is gemaakt, weet u mogelijk niet van tevoren hoeveel elementen een matrix bevat. Om de grootte van een matrix te bepalen, kunt u de Length-eigenschap gebruiken.
Notitie
De Length eigenschap van een matrix is niet gebaseerd op nul.
Voer aan het einde van uw codebestand de volgende code in om het aantal frauduleuze orders te rapporteren:
Console.WriteLine($"There are {fraudulentOrderIDs.Length} fraudulent orders to process.");Deze code maakt gebruik van de eigenschap van de matrix
Length, een geheel getal, om het aantal elementen in uwfraudulentOrderIDsmatrix te retourneren.Zorg ervoor dat uw code overeenkomt met dit voorbeeld:
/* 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.");Sla de wijzigingen op in het Program.cs-bestand en voer de toepassing uit.
U moet de volgende uitvoer zien:
First: A123 Second: B456 Third: C789 Reassign First: F000 There are 3 fraudulent orders to process.
Samenvatting
Dit zijn de belangrijkste dingen die u moet onthouden bij het werken met matrices:
- Een matrix is een speciale variabele die een verzameling gerelateerde gegevenselementen bevat.
- U moet de basisindeling van een declaratie van een matrixvariabele onthouden.
- Open elk element van een matrix om de bijbehorende waarden in te stellen of op te halen met behulp van een op nul gebaseerde index in vierkante haken.
- Als u toegang probeert te krijgen tot een index buiten de grens van de matrix, krijgt u een runtime-uitzondering.
- De
Length-eigenschap biedt u een programmatische manier om het aantal elementen in een matrix te bepalen.