Werken met gekartelde arrays in C #

Een array kan worden gedefinieerd als een opeenvolgende verzameling elementen van hetzelfde gegevenstype. De elementen van een array worden opgeslagen in aangrenzende geheugenlocaties. Arrays kunnen enkelvoudig of meerdimensionaal zijn. Een gekartelde array is een speciaal type van een multidimensionale array waarin elk van de array (een gekartelde array is eigenlijk een array van arrays) een verschillende grootte kan hebben.

U kunt gekartelde arrays hebben in elke computertaal die ondersteuning biedt voor arrays. Een gekartelde array (ook bekend als een ragged array) is een array van arrays waarin de lidarrays op hun beurt verschillende afmetingen en grootten kunnen hebben. U kunt multidimensionale arrays implementeren, dit zijn gekartelde arrays om de prestaties te verbeteren.

Aan de slag met gekartelde arrays in C #

In deze sectie zullen we onderzoeken hoe gekartelde arrays kunnen worden gedeclareerd, geïnitialiseerd en benaderd. Zoals we weten, bestaat een gekartelde array uit een reeks arrays van vergelijkbare of verschillende grootte. Met andere woorden, in een gekartelde array staat het aantal rijen vast, maar het aantal kolommen kan variëren. Wanneer u een gekartelde array declareert, kunt u gewoon het aantal rijen van de array declareren en geeft u er de voorkeur aan het aantal kolommen tijdens runtime op te geven.

Laat ons alles weten wat we tot nu toe hebben geleerd over grillige arrays met een paar codevoorbeelden. Beschouw de volgende array.

string[][] str = new string[5][];

Je hebt de rijen van de array gedeclareerd. Er zijn 5 rijen in deze array die op hun beurt 5 string-arrays van verschillende lengtes kunnen bevatten. Laten we nu kijken hoe we 5 arrays kunnen declareren in de array met de naam str, elk met verschillende lengtes. Het volgende codefragment illustreert hoe dit kan worden bereikt.

str[0] = new string[5];

str[1] = new string[10];

str[2] = new string[20];

str[3] = new string[50];

str[4] = new string[10];

U kunt nu strings van verschillende lengtes opslaan in de gekartelde array, zoals weergegeven in het onderstaande codefragment.

str[0][0] = "Pune";

str[1][0] = "Kolkata";

str[2][0] = "Bangalore";

str[3][0] = "The pink city named Jaipur";

str[4][0] = "Hyderabad";

Hier is de volledige codelijst die illustreert hoe u een gekartelde array kunt declareren, gegevens kunt opslaan en deze vervolgens kunt ophalen en weergeven in de console.

public static void Main(string[] args)

       {

         //First declare the jagged array

           string[][] str = new string[5][];

           str[0] = new string[5];

           str[1] = new string[10];

           str[2] = new string[20];

           str[3] = new string[50];

           str[4] = new string[10];

           //Now store data in the jagged array

           str[0][0] = "Pune";

           str[1][0] = "Kolkata";

           str[2][0] = "Bangalore";

           str[3][0] = "The pink city named Jaipur";

           str[4][0] = "Hyderabad";

            //Lastly, display the content of each of the string arrays inside the jagged array

           for (int i = 0; i < 5; i++)

               Console.WriteLine(str[i][0]);

           Console.Read();

       }

Zoals je kunt zien in het bovenstaande programma, is het aantal rijen van de gekartelde array vast, maar het aantal kolommen varieert. Dit voorbeeld vertegenwoordigt een tweedimensionale, gekartelde array. Als u een normale tweedimensionale array zou gebruiken, zou u 5 x 50, dwz 250 bytes, moeten verbruiken. De reden is dat u ruimte van 50 bytes in elk van de arrays in de gekartelde array zou moeten hebben om de grootste string te kunnen bevatten. In dit voorbeeld heeft de grootste string grootte 50. In tegendeel, als je een gekartelde array gebruikt, verbruikt je uiteindelijk slechts 95 bytes! Interessant, nietwaar?

Wanneer u het bovenstaande programma uitvoert, worden de strings die zijn opgeslagen in de gekartelde array weergegeven in het consolevenster.

Een ander voorbeeld - een grillige reeks gehele getallen

Net als hoe we een gekartelde reeks tekenreeksen hebben gemaakt, kunt u ook een gekartelde reeks gehele getallen maken. In feite kunt u een gekartelde array van elk gegevenstype hebben. Hier leest u hoe u een gekartelde array in C # kunt declareren.

int [][] numbersArray;

Het volgende codefragment illustreert hoe u een geheel getal gekartelde array kunt declareren, dwz een gekartelde array die op zijn beurt arrays van gehele getallen van verschillende elementen kan opslaan.

int[][] numbersArray = new int[5][];

for (int i = 0; i < numbersArray.Length; i++)

   {

         numbersArray[i] = new int[10 * (i + 1)];

   }

Het bovenstaande codefragment creëert een geheel getal gekartelde array met de naam numbersArray die op zijn beurt gehele getallen arrays van verschillende grootten bevat.