Aan een variabele kan je altijd maar één waarde tegelijk toewijzen. Een Array daarentegen kan verschillende waarden bevatten. Men spreekt daarbij van verschillende elementen, waarbij elk element een waarde heeft. De afzonderlijke elementen gedragen zich bijgevolg als variabelen. In plaats van tien variabelen kan je dus ook een Array van tien elementen gebruiken.
De elementen van een Array behoren allen tot hetzelfde type:
Arrays hebben nog een groot voordeel : de verschillende elementen worden doorlopend genummerd. In een lus kan je de elementen van de Array doorlopen.
Een Array met n elementen: de elementen hebben een index 0 tot n-1
int[] leeftijden;
Bij instantiëren van een Array wordt aangegeven hoeveel elementen de Array zal bevatten:
De elementen kunnen nu ook opgevuld worden, deze elementen moeten van het type zijn dat je hebt aangegeven bij declaratie.
int[] leeftijden = new int[4];
//De Array met de naam leeftijden zal 4 elementen bevatten van het type int.
//Deze elementen worden genummmerd 0 - 3
leeftijden[0] = 18;
leeftijden[1] = 63;
leeftijden[2] = 42;
leeftijden[3] = 7;
int aantalelementen = 4;
int[] leeftijden = new int[aantalelementen];
int[] leeftijden = new int[4] {18,63,42,7};
int[] leeftijden = {18,63,42,7};
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
int[] leeftijden = { 18, 63, 42, 7 };
MessageBox.Show(leeftijden[2].ToString());
}
}
Array is in .Net een Klasse, deze klasse heeft tal van nuttige eigenschappen (zie later) en methoden.
De eigenschap Length van de Array leeftijden geeft ons een int die het aantal elementen van de Array bevat:
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
//MessageBox.Show(leeftijden[2].ToString());
}
private void btnToonLeeftijden_Click(object sender, RoutedEventArgs e)
{
int[] leeftijden = { 18, 63, 42, 7 };
lstResultaat.Items.Clear();
for (int i = 0; i < leeftijden.Length; i++)
{
lstResultaat.Items.Add(leeftijden[i])
/* i is de tellervariabele
* en zal dus een keer 0, 1, 2 en 3 bevatten - leeftijden bevat 4 elementen
* we voegen voor elke lusdoorgang het ie element toe aan de Listbox */
}
}
}
Een for-lus geeft je natuurlijk de vrijheid om bijvoorbeeld slechts de eerste 3 elementen te overlopen, of om de elementen achterwaarts te doorlopen.
foreach (int leeftijd in leeftijden) { lstResultaat.Items.Add(leeftijd); }
Bij elke lusdoorgang bevat de variabele leeftijd dus de volgende waarde uit de Array leeftijden. Je hebt nu geen tellervariabele meer nodig, en hoeft je ook niet te bekommeren om een lusvoorwaarde.
Arrays hebben echter ook een belangrijk nadeel: ze zijn fixed-length: om elementen toe te voegen of te verwijderen ben je dus verplicht een nieuwe Array te maken!
Arrays zijn dus pas interessant als het aantal elementen in een reeks nooit of heel zelden verandert.
Met het sleutelwoord params kan je in een methode waarden in een Array ontvangen, bij aanroep van deze methode kunnen de waarden 1 voor 1 worden opgegeven:
private void toonBerichten(params string[] berichten)
{
lstResultaat.Items.Clear();
foreach (string bericht in berichten)
{
lstResultaat.Items.Add(bericht);
}
}
toonBerichten(
"C# is leuk",
"Soep is lekker",
"Sneeuw is koud",
"Binair begint met de letter b");
Belangrijk bij het gebruik van params is dat enkel het laatste argument binnen een methode dit sleutelwoord kan bevatten.
Binnen vele .Net-methoden wordt van dit principe gebruik gemaakt: String.Fromat, Console.WriteLine, ...)
In deze namespace vinden we een aantal klassen terug, elk met hun specifieke troeven:
Toepassing:
ArrayList namen = new ArrayList(); namen.Add("William"); namen.Add("Johan"); namen.Add("Marie"); namen.Add("Eddy"); namen.Add("Tinne"); namen.Insert(3, "Sofie"); namen.Remove("Marie"); lstResultaat.Items.Clear(); foreach (string naam in namen) { lstResultaat.Items.Add(naam); }
Een ArrayList kan net zoals een Array bestaan uit een serie volwaardige objecten, zoals objecten van onze eigen klasse Circle:
ArrayList cirkels = new ArrayList(); cirkels.Add(new Circle(3)); cirkels.Add(new Circle(10)); cirkels.Add(new Circle(8)); lstResultaat.Items.Clear(); foreach (Circle circle in cirkels) { lstResultaat.Items.Add(String.Format( "Cirkel met radius {0} en omtrek {1}", circle.radius.ToString(), Math.Round(circle.Circumference(),2))); }
| Meer tutorials: |
| leer ook: | html | | xhtml | | css | | asp | | asp.net | | c# | | ado.net | | linq | | ajax | | java | | javascript |