CS-opas:Taulukot

Mureakuha

Loikkaa: valikkoon, hakuun
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);
}
Henkilökohtaiset työkalut