CS-opas:Taulukot
Mureakuha
- Teknisistä rajoituksista johtuen artikkelin yllä näkyvä otsikko on virheellinen. Oikea otsikko on C#-opas: Taulukot.
Sisällysluettelo |
Taulukoiden johdanto
C#:ssa taulukotikin ovat olioita (System.Array), joten niitä käytetään kuten muitakin olioita. Perinteiset taulukot on kiinteä mittaisia ja siihen alkion lisääminen onnistuu luomalle uusi isompi taulu, johon vanha taulu kopioidaan ja sitten se uusi alkio. Tämä on tietysti liian monimutkaista, joten .NET ohjelmoijien avuksi on tehty ArrayList luokka, joka Java ohjelmoijillekkin on tuttu.
Esimerkkejä
int[] luvut; //Esittelee int-tyyppisen kokonaisluku taulukon luvut luvut = new int[100]; //luo int-tyyppisen taulukon, jossa on 100 paikkaa (0-99) luvut[66]=99; //Asettaa paikkaan 66 arvon 99:n
String[] nimet = {"Pekka", "Lasse", "Jyrki"};
Console.WriteLine("{0}",nimet.Length);
System.Array:n Propertyt
IsFixedSize
Palauttaa totuusarvon siitä, onko taulukko kiinteäkokoinen. (Return a value indicating if an array has a fixed size or not.)
IsReadOnly
Palauttaa totuusarvon siitä, että onko taulukko vain luettavissa. (Returns a value indicating if an array is read-only or not.)
IsSynchronized
Palauttaa totuusarvon siitä, onko pääsy taulukkoon säieturvallinen (thread-safe). (Returns a value indicating if access to an array is thread-safe or not.)
Length
Palauttaa taulukon alkioiden määrän.
int[] taulu = {15,78,95,42};
Console.WriteLine("Taulukossa alkioita {0}",taulu.Length);
//Tulostaa: Taulukossa alkioita 4
Rank
Palauttaa taulukon ulottuvuuksien määrän.
int[,] taulu = new int[3,3];
Console.WriteLine("Taulukossa ulottuvuuksia {0}",taulu.Rank);
//Tulostaa: Taulukossa ulottuvuuksia 2
SyncRoot
Palauttaa olion, jota käytetään synkronoimaan pääsy taulukkoon. (Returns an object that can be used to synchronize access to the array.)
System.Array:n metodit
BinarySearch
BinarySearchin käyttäminen vaatii, että taulukon on oltava järjestyksessä.
int[] taulu = {99,45,82,55,12};
Array.Sort(taulu); //12 45 55 82 99
int etsittava = 82;
int arvo = Array.BinarySearch(taulu, etsittava);
Console.Write("{0}",arvo); //Tulostaa: 3
Clone
This method creates a shallow copy of the Array.
Copy
Tämä metodi kopioi osan taulukosta toiseen taulukkoon ja suorittaa tyyppimuunnokset ja boxingin (muunnoksen primitiivi-tyypistä vastaavaan object-luokasta periytyvään viitetyyppiin), kuten vaadittu. (This method copies a section of one Array to another Array and performs type casting and boxing as required.)
CopyTo
CopyTo kopio valitun ulottuvuuden solut.
int[] taulu = {84,12,48,35};
int[] t = new int[4];
taulu.CopyTo(t,0);
foreach(int solu in t)
{
Console.Write("{0} ",solu);
}
Console.WriteLine();
t[1] = 99;
foreach(int solu in t)
{
Console.Write("{0} ",solu);
}
Console.WriteLine();
foreach(int solu in taulu)
{
Console.Write("{0} ",solu);
}
Tulostaa:
- 84 12 48 35
- 84 99 48 35
- 84 12 48 35
CreateInstance
Staattinen metodi, jolla voi luoda ilmentymän Array luokasta.
Array nimet = Array.CreateInstance(typeof(String), 3);
nimet.SetValue("Pekka",0);
nimet.SetValue("Keijo",1);
nimet.SetValue("Lissu",2);
foreach(String nimi in nimet) {
Console.WriteLine("{0}",nimi);
}
GetEnumerator
Tämä metodi palauttaa taulukon IEnumerator:n. (This method returns an IEnumerator for the Array.)
GetLength
Kertoo halutun ulottuvuuden sisällyttämät ulottuvuudet.
int[,] taulu = new int[3,4];
Console.WriteLine("Taulukossa ulottuvuuksia {0}",taulu.GetLength(0));
//Tulostaa Taulukossa ulottuvuuksia 3
Console.WriteLine("Taulukossa ulottuvuuksia {0}",taulu.GetLength(1));
//Tulostaa Taulukossa ulottuvuuksia 4
GetLowerBound
Palauttaa ensimmäisen solun indeksiluvun tai jotain sellaista. Toistaiseksi en ole keksinyt miten C#:ssa tuo arvo voisi olla jotain muuta, kuin nolla.
int[,] taulu = new int[3,4];
Console.WriteLine("Alaraja on {0}",taulu.GetLowerBound(0));
GetUpperBound
Palauttaa taulukon ylärajan.
int[,] taulu = new int[3,4];
Console.WriteLine("Yläraja on {0}",taulu.GetUpperBound(0));
Console.WriteLine("Yläraja on {0}",taulu.GetUpperBound(1));
GetValue
Palauttaa valitun solun olion.
int[] taulu = {99,45,82};
Console.WriteLine("Yläraja on {0}",taulu.GetValue(1));
taulu.GetValue(1):n voi korvata myös "taulu[1]" koodilla, jolla tulos on aivan sama.
IndexOf
This method returns the index of the first occurrence of a value in a one-dimensional Array or in a portion of the Array.
Initialize
This method initializes every item of the value-type Array by calling the default constructor of the value type.
LastIndexOf
Palauttaa taulukon lopusta päin ensimmäisen löydetyn solun.
int[] taulu = {12,45,85,12,65};
int missa = Array.LastIndexOf(taulu,12);
Console.WriteLine("{0}",missa); //Tulostaa 3
Reverse
Tämä metodi kääntää alkioiden järjestyksen yksiulotteisessa taulukossa, tai osassa taulukkoa. (This method reverses the order of the items in a one-dimensional Array or in a portion of the Array.)
SetValue
Asettaa solun arvon.
int[] taulu = {12,45,85,12,65};
taulu.SetValue(54,4);
foreach(int solu in taulu) {
Console.Write("{0} ",solu); //12 45 85 12 54
}
Eli vastaa "taulu[4] = 54" tapausta
Sort
Sort on staattinen metodi, joka lajittelee taulukon. Lajiteltavilta olioilta vaaditaan toimiva Equals metodi, joka on esitelty Object luokassa Tämä ei ole varma tai testattu tieto.
int[] taulu = {99,45,82};
Array.Sort(taulu);
foreach(int solu in taulu) {
Console.Write("{0} ",solu);
}
