Merkit ja merkkijonot

(Tämä sivu on kesken.)

Merkkijonot koostuvat yhdestä tai useammasta peräkkäisestä ''merkistä''. Esimerkiksi merkkijonon

Hei, maailma!

ensimmäinen merkki sattuu olemaan on H, sitten e, ja niin edelleen. Myös välilyönti on merkki, kuten myös huutomerkki kyseisen merkkijonon lopussa.

Merkkijonojen (kuten myös merkkien, joista merkkijonot koostuvat) käsittely on tärkeä alue ohjelmoinnissa. Merkkijonoihin törmää useissa eri yhteyksissä monenlaisissa ohjelmointiin liittyvissä tilanteissa.

  • Yksi WWW-sivu on yksi pitkä merkkijono, jonka selain tulkitsee näytettäväksi tietyillä säännöillä.
  • Kun käyttäjä kirjoittaa tietokoneella tekstiä vaikka lomakkeelle, vaikkapa sähköpostiosoitteensa, hän kirjoittaa merkkijonon, jonka oikeellisuus voidaan tarkistaa tutkimalla merkkijonosta tiettyjä piirteitä.
  • Myös ohjelmakoodi on merkkijono, jossa on enemmän tai vähemmän rivejä. Kääntäessäsi koodin, esimerkiksi painamalla Visual Studiossa F5, C#-kääntäjä käsittelee kirjoittamasi merkkijonon (siis ohjelmakoodin) tietokoneen ymmärtämään muotoon, jotta koodi voidaan suorittaa.

1. Merkki, char-tyyppi

Yksittäinen (kirjoitus-)merkki voidaan tallentaa char-tyyppisen muuttujan arvoksi. Tallennettava merkki voi olla mitä tahansa roomalaisesta, heprealaisesta, arabialaisesta, kyrillisestä tai jostain muusta lukuisista aakkostoista - jopa japanilaisia tai kiinalaisia kirjoitusmerkkejä voidaan (tietyin edellytyksin) tallentaa char-muuttujalle.

char merkki = 'a';

Huomaa, että merkin ympärillä on yksinkertaiset lainusmerkit (Enter-näppäimen vasemmalla puolella oleva merkki). Jos yrität sijoittaa merkkiä kaksinkertaisilla "hipsuilla" char-muuttujalle, tuloksena on käännösvirhe.

char merkki = "a"; // EI käänny!
error CS0029: Cannot implicitly convert type 'string' to 'char'

2. Merkkijono, String-tyyppi

Monta merkkiä peräkkäin...

Sisäisesti taulukko kirjaimia...

3. Vertailussa String ja char

Vaikka molemmat tyypit, sekä String että char, käsittelevät merkkejä, on niiden käytössä huomattavia eroja. Luonnollisesti, char-muuttujalle merkki sijoitetaan käyttämällä yksinkertaisia lainausmerkkejä, String-muuttujalle arvo sijoitetaan kaksinkertaisilla lainausmerkeillä.

Toisaalta, voit kyllä sijoittaa String-muuttujalle vain yhden merkin.

String jono = "a";

Tarkasti ottaen char-muuttujan arvo, esimerkiksi a, on C#-kielessä 16-bittinen kokonaislukuarvo väliltä 0..65535. char-muuttujalle varataan siis aina sama tila, 16 bittiä. Kullekin näistä 16 bitin avulla ilmoitettavista kokonaislukuarvoista on UTF-8-merkistössä, jota char-tyyppi noudattaa, sovittu yksikäsitteinen merkki. C#-koodissa voidaan jopa tulostaa näiden (kirjoitus-)merkkien kokonaislukuarvot. Esimerkki alla

int merkkiLukuna = (int)'a';

Tästä syystä merkkejä voidaan periaatteessa jopa laskea yhteen.

esim.

Merkkien lukuarvojen avuilla voidaan asettaa esimerkiksi silmukan lopetusehto.

esim.

Olio vs. arvopohjainen muuttuja

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.