C# metodit
C# on ohjelmointikieli, joka perustuu objekti-suuntautuneeseen paradigmaan. Tässä kielessä metodeita käytetään toimintojen ja laskelmien suorittamiseen, ja ne ovat osa luokkia tai rajapintoja. C#-kieleen liittyviä metodeja on paljon, joten tässä on vain joitakin yleisesti käytettyjä metodeita ja niiden lyhyt kuvaus.
Päämetodi (Main):
Sovelluksen tärkein metodi, joka on sovelluksen aloituskohta. Se määritellään seuraavasti:
Main-metodin eri syntaksit:
ToString():
ToString() on metodi, joka on peräisin System.Object-luokasta ja joka on käytettävissä kaikille .NET-objekteille. Tämä metodi palauttaa objektin merkkijonomuotoisen esityksen. Oletusarvoisesti ToString()-metodi palauttaa objektin täyden tyyppinimen, mikä ei välttämättä ole kovin hyödyllistä käyttäjän kannalta. Tästä syystä on suositeltavaa ylikirjoittaa (override) ToString()-metodi, kun määrittelet omia luokkia, jotta voit tarjota merkityksellisen merkkijonomuotoisen esityksen objekteille.
Ylikirjoittaaksesi ToString()-metodin omassa luokassasi, voit käyttää "override" -avainsanaa ja määritellä uuden toteutuksen ToString()-metodille. Tässä on esimerkki yksinkertaisesta C#-luokasta, joka ylikirjoittaa ToString()-metodin:
Ylikirjoittamalla ToString()-metodin voit tarjota mukautetun merkkijonomuotoisen esityksen objekteille, mikä voi olla hyödyllistä lokitukseen, virheilmoituksiin, käyttöliittymän näyttämiseen tai muihin tarkoituksiin, joissa objektien tiedot on esitettävä selkeästi ja ymmärrettävästi. ToString()-metodi on yleinen käytäntö, joka tekee C#-luokista helpommin käytettäviä ja ylläpidettäviä.
GetHashCode():
GetHashCode() on metodi, joka on peräisin System.Object-luokasta ja joka on käytettävissä kaikille .NET-objekteille. Tämä metodi palauttaa kokonaislukuarvon (integer), joka tunnetaan hajautuskoodina (hash code) ja joka edustaa objektin nykyistä tilaa. Hajautuskoodin tarkoitus on mahdollistaa nopea vertailu objektien välillä ja optimoida niiden tallentaminen hajautettuihin tietorakenteisiin, kuten hajautustauluihin (HashSet tai Dictionary).
Oletuksena GetHashCode()-metodi käyttää objektin muistiosoitetta laskemiseen, mikä ei ole optimaalinen ratkaisu useimmissa tapauksissa. Jos aiot käyttää objekteja hajautetussa tietorakenteessa tai vertailla niitä muihin objekteihin, on suositeltavaa ylikirjoittaa (override) GetHashCode()-metodi, jotta voit tarjota paremman hajautuskoodin, joka perustuu objektin tilaan.
Kun ylikirjoitat GetHashCode()-metodin, on tärkeää noudattaa seuraavia periaatteita:
Yhdenmukaisuus: Saman objektin tulee palauttaa sama hajautuskoodi sen elinkaaren aikana, ellet muuta objektin tilaa siten, että se vaikuttaa vertailuun.
Laatu: Kaksi erilaista objektia, jotka ovat samanlaisia vertailun kannalta, tulee tuottaa sama hajautuskoodi. Tämä ei kuitenkaan tarkoita, että kaksi erilaista objektia ei voi tuottaa samaa hajautuskoodia.
Tehokkuus: GetHashCode()-metodin tulisi olla nopea ja tuottaa hajautuskoodi, joka jakaa objektit tehokkaasti eri hajautusarvoihin.
Tässä on esimerkki C#-luokasta, joka ylikirjoittaa GetHashCode()-metodin:
Tässä esimerkissä Equals()-metodi vertaa kahden Henkilo-objektin Etunimi- ja Sukunimi-kenttiä. Koska Equals()- ja GetHashCode()-metodit ovat yhteensopivia, voit käyttää Henkilo-objekteja hajautetussa tietorakenteessa, kuten Dictionary tai HashSet, tehokkaasti.
Yhteenvetona GetHashCode()-metodi on tärkeä metodi, joka mahdollistaa objektien tehokkaan käytön hajautetuissa tietorakenteissa ja vertailuissa. Oikein toteutettu GetHashCode()-metodi voi parantaa ohjelmiesi suorituskykyä ja luotettavuutta.
GetType():
GetType() on metodi, joka on peräisin System.Object-luokasta ja on käytettävissä kaikille .NET-objekteille. Tämä metodi palauttaa Type-objektin, joka kuvaa objektin tyyppiä eli sen luokkaa tai rakennetta (struct). Type-luokka on osa .NET Reflection -järjestelmää ja tarjoaa tietoa objektien tyypeistä, kuten nimi, periytyminen, jäsenet (kuten kentät, ominaisuudet, metodit ja tapahtumat) sekä niiden määritteet ja merkinnät (attributes).
GetType()-metodin avulla voit ohjelmallisesti tutkia objektien tyyppejä, tehdä dynaamisia kutsuja, manipuloida objekteja tai toteuttaa räätälöityjä toimintoja, jotka perustuvat objektin tyyppiin.
GetType()-metodi on hyödyllinen työkalu, kun tarvitset tietoa objektien tyypeistä ja niiden jäsenistä ajonaikaisesti. Vaikka sen käyttö ei ole yleistä, se voi olla arvokas erityistapauksissa, kuten tyyppien ja koodin heijastuksen, dynaamisen koodin luonnin ja joustavien sovellusten toteuttamisen kannalta.
Equals():
Equals()-metodi on yksi System.Object-luokasta periytyvä metodi, joka on saatavilla kaikille .NET-objekteille. Tämän metodin tarkoitus on verrata kahden objektin samankaltaisuutta. Oletuksena Equals()-metodi käyttää objektien vertailuun muistiosoitteita, eli se tarkistaa, viittaavatko objektien referenssit samaan muistipaikkaan. Tällöin kaksi objektia katsotaan samanlaisiksi vain, jos ne ovat itse asiassa sama objekti.
Tämä oletuskäyttäytyminen ei ole aina toivottavaa, koska usein on tarpeen verrata objektien tiloja, ei niiden referenssejä. Tämän vuoksi on suositeltavaa ylikirjoittaa Equals()-metodi omilla luokilla, jotta voit määrittää, miten objektien samankaltaisuus tulisi tarkistaa.
Kun ylikirjoitat Equals()-metodin, on tärkeää myös ylikirjoittaa GetHashCode()-metodi, jotta saat aikaan yhdenmukaisen ja johdonmukaisen vertailun objektien välillä. Muussa tapauksessa saatat kohdata odottamattomia ongelmia, kun käytät hajautettuja tietorakenteita, kuten Dictionary tai HashSet.
CompareTo():
CompareTo() on metodi, jota käytetään objektien vertailuun niiden järjestyksen määrittämiseksi. Tämä metodi on yleensä määritelty IComparable-rajapinnan kautta. Toteuttamalla IComparable-rajapinnan luokassasi voit määrittää, miten objektit tulisi lajitella tai verrata keskenään.
CompareTo()-metodi palauttaa:
Positiivisen luvun, jos nykyinen objekti on suurempi kuin verrattava objekti.
Nollan, jos objektit ovat samanarvoisia.
Negatiivisen luvun, jos nykyinen objekti on pienempi kuin verrattava objekti.
Toteuttamalla IComparable-rajapinnan voit helposti lajitella objekteja käyttäen esimerkiksi Array.Sort() tai List.Sort() -metodeja:
Yhteenvetona, CompareTo()-metodi on tärkeä metodi, jota käytetään objektien järjestyksen vertailuun.
StartsWith() ja EndsWith():
StartsWith() ja EndsWith() ovat metodeja, jotka ovat käytettävissä C#-merkkijonoille (string-tyyppi). Nämä metodit auttavat määrittämään, alkaako tai päättyykö merkkijono tietyllä alimerkkijonolla.
StartsWith()-metodi tarkistaa, alkaako merkkijono tietyllä alimerkkijonolla. Tämä metodi palauttaa true, jos merkkijono alkaa määritetyllä alimerkkijonolla, ja false, jos se ei ala.
Esimerkki StartsWith()-metodin käytöstä:
Substring():
Substring() on C#-merkkijonojen (string-tyyppi) metodi, joka palauttaa uuden merkkijonon, joka koostuu alkuperäisen merkkijonon alijoukosta. Metodi ottaa yhden tai kaksi parametria, jotka määrittelevät palautettavan alijoukon alkukohdan ja mahdollisen pituuden.
Substring() yhdellä parametrilla
Kun Substring()-metodia käytetään yhden parametrin kanssa, se palauttaa alijoukon alkukohdasta loppuun asti:
Substring() kahdella parametrilla
Kun Substring()-metodia käytetään kahden parametrin kanssa, se palauttaa alijoukon alkukohdasta ja määritellyn pituuden:
IndexOf() ja LastIndexOf():
IndexOf() ja LastIndexOf() ovat C#-merkkijonojen (string-tyyppi) metodeja, joita käytetään etsimään tiettyjä merkkejä tai alimerkkijonoja merkkijonosta.
Nämä metodit palauttavat indeksin, jossa etsitty merkki tai alimerkkijono esiintyy ensimmäisen kerran (IndexOf) tai viimeisen kerran (LastIndexOf). Jos merkkiä tai alimerkkijonoa ei löydy, molemmat metodit palauttavat arvon -1
Replace():
Replace()-metodi on C#-merkkijonojen (string-tyyppi) metodi, jota käytetään korvaamaan merkkijonon kaikki esiintymät tietyllä merkillä tai alimerkkijonolla. Metodi palauttaa uuden merkkijonon, jossa kaikki etsityt merkit tai alimerkkijonot on korvattu määritetyllä korvaavalla merkillä tai alimerkkijonolla. Alkuperäinen merkkijono ei muutu.
Replace()-metodin käyttö:
string teksti = "Hei mitä sinulle kuuluu?";
string korvattuTeksti = teksti.Replace("?", "!");
Console.WriteLine(korvattuTeksti); // Tulostaa "Hei mitä sinulle kuuluu!"
Voit käyttää yhtä merkkiä, tai merkkijonoa.
ToUpper() ja ToLower():
ToUpper() ja ToLower() ovat C#-merkkijonojen (string-tyyppi) metodeja, joita käytetään muuntamaan merkkijonon kaikki merkit suuriksi kirjaimiksi (ToUpper()) tai pieniksi kirjaimiksi (ToLower()). Molemmat metodit palauttavat uuden merkkijonon, jossa kaikki alkuperäisen merkkijonon merkit on muutettu. Alkuperäinen merkkijono ei muutu.
ToUpper()
ToUpper()-metodi muuttaa merkkijonon kaikki merkit suuriksi kirjaimiksi:
string suuriksi = teksti.ToUpper();
ToLower()
ToLower()-metodi muuttaa merkkijonon kaikki merkit pieniksi kirjaimiksi:
string pieniksi = teksti.ToLower();
Trim(), TrimStart() ja TrimEnd():
Trim(), TrimStart() ja TrimEnd() ovat C#-merkkijonojen (string-tyyppi) metodeja, joita käytetään poistamaan ylimääräiset tyhjät merkit (kuten välilyönnit, tabulaattorit ja rivinvaihdot) merkkijonon alusta, lopusta tai molemmista. Kaikki metodit palauttavat uuden merkkijonon, josta ylimääräiset merkit on poistettu. Alkuperäinen merkkijono ei muutu.
Trim()
Trim()-metodi poistaa merkkijonon alusta ja lopusta kaikki tyhjät merkit:
string teksti = "***Hello word***";
string siistitty = teksti.Trim("*"); // tulostaa Hello word
TrimStart() //toimii samoin, mutta poistaa vain alusta.
TrimEnd() //toimii samoin, mutta poistaa vain lopusta.
Math-luokan metodit:
Math-luokka on C#-standardikirjaston osa, joka tarjoaa joukon matemaattisia funktioita. Math-luokka sisältää seuraavia metodeja, joiden avulla voidaan suorittaa yleisiä matemaattisia toimintoja:
Math.Abs:
Palauttaa luvun itseisarvon.
Math.Ceiling:
Pyöristää desimaaliluvun ylöspäin lähimpään kokonaislukuun.
Math.Floor:
Pyöristää desimaaliluvun alaspäin lähimpään kokonaislukuun.
Math.Round:
Pyöristää desimaaliluvun lähimpään kokonaislukuun.
Math.Min(luku);
Palauttaa kahdesta luvusta pienemmän.
int pienempi = Math.Min(a, b);
Math.Max(luku);
Palauttaa kahdesta luvusta suuremman.
Math.Pow(luku);
Laskee luvun eksponentin potenssiin.
Math.Sqrt(luku);
Math.Sin, Math.Cos, Math.Tan:
Math.ASin, Math.ACos, Math.ATan:
Math.Log();
Math.Log10();
Laskee kymmenkantaisen logaritmin annetusta numerosta.
Math.Exp();
Laskee e:n potenssiin annetun numeron.
Math.IEEERemainder();
Laskee kahden numeron jakojäännöksen IEEERemainder-toiminnolla.
Math.Sign();
Palauttaa numeron etumerkin. Jos numero on positiivinen, palautetaan 1. Jos numero on negatiivinen, palautetaan -1. Jos numero on 0, palautetaan 0.
Math.Atan2();
Laskee arkustangentin annetuista x- ja y-koordinaateista. Tämä toiminto on hyödyllinen esimerkiksi kahden pisteen välisen kulman laskemiseen.
Math.Truncate();
Poistaa desimaaliosan numerosta, jolloin jäljelle jää vain kokonaisosa.
Math.Cosh, Math.Sinh ja Math.Tanh:
Laskevat hyperboliset kosini, sini ja tangentin annetusta numerosta.
Math.PI();
Arvo π (pi) eli ympyrän kehän suhde sen halkaisijaan, noin 3.14159.
Math.E();
Neperin luku e eli luonnollisen logaritmin kantaluku, noin 2.71828.
DateTime-luokan metodit:
Split():
string lause = "Tämä on esimerkki, jossa käytetään Split()-metodia.";
char[] erotinmerkit = { ' ', ',', '.' };
string[] sanat = lause.Split(erotinmerkit, StringSplitOptions.RemoveEmptyEntries);
Join():
Join() on C#-merkkijonojen (string) käsittelyyn liittyvä metodi, joka yhdistää taulukon (array) tai kokoelman (collection) merkkijonoista yhdeksi merkkijonoksi, käyttäen määriteltyä erotinmerkkijonoa jokaisen osan välissä. Join()-metodi on staattinen ja kuuluu String-luokkaan.
Array-luokan metodit:
Sort():
Järjestää taulukon alkiot nousevaan järjestykseen.
int[] numerot = { 5, 2, 8, 1, 3 };
Array.Sort(numerot); // numerot: { 1, 2, 3, 5, 8 }
Reverse():
Kääntää taulukon alkiot toisinpäin.
int[] numerot = { 1, 2, 3, 4, 5 };
Array.Reverse(numerot); // numerot: { 5, 4, 3, 2, 1 }
IndexOf():
Etsii taulukosta ensimmäisen esiintymän annetusta arvosta ja palauttaa sen indeksin. Jos arvoa ei löydy, palauttaa -1.
int[] numerot = { 1, 2, 3, 4, 5 };
int indeksi = Array.IndexOf(numerot, 3); // indeksi: 2
LastIndexOf():
Etsii taulukosta viimeisen esiintymän annetusta arvosta ja palauttaa sen indeksin. Jos arvoa ei löydy, palauttaa -1.
int[] numerot = { 1, 2, 3, 4, 5, 3 };
int indeksi = Array.LastIndexOf(numerot, 3); // indeksi: 5
Clear():
Asettaa taulukon tietyn osan arvot oletusarvoiksi (0 numeerisille arvoille, false Boole-arvoille ja null-viitteille).
int[] numerot = { 1, 2, 3, 4, 5 };
Array.Clear(numerot, 1, 3); // numerot: { 1, 0, 0, 0, 5 }
Resize():
Muuttaa taulukon kokoa luomalla uuden taulukon ja kopioimalla alkuperäisen taulukon alkiot siihen.
int[] numerot = { 1, 2, 3, 4, 5 };
Array.Resize(ref numerot, 7); // numerot: { 1, 2, 3, 4, 5, 0, 0 }
Copy():
Kopioi taulukon osan toiseen taulukkoon.
int[] numerot1 = { 1, 2, 3, 4, 5 };
int[] numerot2 = new int[5];
Array.Copy(numerot1, numerot2, numerot1.Length); // numerot2: { 1, 2, 3, 4, 5 }
FindLast():
Etsii viimeisen alkion, joka täyttää annetun ehdon (predikaatin), ja palauttaa sen. Jos alkioita ei löydy, palauttaa oletusarvon.
int[] numerot = { 1, 2, 3, 4, 5 };
int tulos = Array.FindLast(numerot, x => x > 3); // tulos: 5
FindAll():
Etsii kaikki alkiot, jotka täyttävät annetun ehdon (predikaatin), ja palauttaa ne uudessa taulukossa.
int[] numerot = { 1, 2, 3, 4, 5 };
int[] tulos = Array.FindAll(numerot, x => x > 2); // tulos: { 3, 4, 5 }
Exists():
Tarkistaa, onko taulukossa ainakin yksi alkio, joka täyttää annetun ehdon (predikaatin).
int[] numerot = { 1, 2, 3, 4, 5 };
bool onOlemassa = Array.Exists(numerot, x => x > 4); // onOlemassa: true
TrueForAll():
Tarkistaa, täyttävätkö kaikki taulukon alkiot annetun ehdon (predikaatin).
int[] numerot = { 2, 4, 6, 8, 10 };
bool kaikkiParillisia = Array.TrueForAll(numerot, x => x % 2 == 0); // kaikkiParillisia: true
List-luokan metodit:
List-luokka tarjoaa metodeja dynaamisten taulukoiden (kokoelmien) hallintaan, kuten Add(), Remove(), RemoveAt(), Clear(), Contains(), IndexOf() ja Sort().
File-luokan metodit:
C# System.IO.File -luokka tarjoaa monia hyödyllisiä metodeja tiedostojen käsittelyyn. Tässä on joitain yleisimpiä metodeja:
ReadAllText():
Lukee tiedoston sisällön ja palauttaa sen merkkijonona.
string sisalto = File.ReadAllText("teksti.txt");
WriteAllText():
AppendAllText():
ReadAllLines():
WriteAllLines():
AppendAllLines():
Copy():
Delete():
Exists():
Move():
Directory-luokan metodit:
System.IO-avaruudessa sijaitseva Directory-luokka sisältää metodeja hakemistojen käsittelyyn, kuten CreateDirectory(), Delete(), Exists(), GetFiles(), GetDirectories(), GetCurrentDirectory() ja SetCurrentDirectory().
Path-luokan metodit:
System.IO-avaruudessa sijaitseva Path-luokka sisältää metodeja polkujen ja tiedostonimien käsittelyyn, kuten GetDirectoryName(), GetFileName(), GetExtension(), GetFullPath(), Combine(), ChangeExtension() ja GetTempFileName().
Regex-luokan metodit:
System.Text.RegularExpressions-avaruudessa oleva Regex-luokka tarjoaa metodeja säännöllisten lausekkeiden käsittelyyn, kuten Match(), Matches(), IsMatch(), Replace() ja Split().
Task.Run():
Tämä metodi luo ja käynnistää uuden tehtävän, joka suorittaa annetun toiminnon. Sitä käytetään asynkronisten operaatioiden toteuttamiseen ja rinnakkaisuuden hallintaan.
Nämä ovat vain joitain C#-kieleen liittyviä metodeja, ja kattavan luettelon saamiseksi sinun tulisi tutustua C#-dokumentaatioon ja erilaisiin kirjastoihin, joita .NET Framework ja .NET Core tarjoavat.
Kommentit
Lähetä kommentti