C# Academy · Oppitunti

HasValue- ja Value-ominaisuudet

Tarkastelkaa nullable-arvoja ja käyttäkää niitä turvallisesti.

Oppitunti 2/413 vaihetta

HasValue- ja Value-ominaisuudet on ilmainen C# Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu C# Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. C# Academy-kurssilla on yhteensä 4 oppituntia.

Kaksi tärkeää ominaisuutta

Jokaisella nullable-arvolla on HasValue (bool) ja Value (taustalla oleva arvo). Näiden avulla voitte tarkastella arvoa turvallisesti.

using System;

class Program {
    static void Main() {
        int? n = 5;
        Console.WriteLine(n.HasValue);
        Console.WriteLine(n.Value);
    }
}

HasValue tarkistaa arvon olemassaolon

HasValue on true, kun arvo on olemassa, ja false, kun arvo on null.

using System;

class Program {
    static void Main() {
        int? a = 10;
        int? b = null;
        Console.WriteLine(a.HasValue);
        Console.WriteLine(b.HasValue);
    }
}

Valuen lukeminen turvallisesti

Tarkistakaa aina HasValue ennen Value-ominaisuuden lukemista, sillä null-arvon Value-ominaisuuden lukeminen aiheuttaa poikkeuksen.

using System;

class Program {
    static void Main() {
        int? n = 42;
        if (n.HasValue) {
            Console.WriteLine(n.Value * 2);
        }
    }
}

Valuen käyttäminen null-arvolla aiheuttaa poikkeuksen

Jos luette Value-ominaisuuden, kun nullable-arvo on null, C# aiheuttaa InvalidOperationException-poikkeuksen. Tarkistus estää tämän.

using System;

class Program {
    static void Main() {
        int? n = null;
        try {
            Console.WriteLine(n.Value);
        } catch (InvalidOperationException) {
            Console.WriteLine("Caught: no value");
        }
    }
}

GetValueOrDefault

GetValueOrDefault() palauttaa arvon, jos se on olemassa, ja muussa tapauksessa tyypin oletusarvon (int-tyypille 0 ja bool-tyypille false).

using System;

class Program {
    static void Main() {
        int? n = null;
        Console.WriteLine(n.GetValueOrDefault());
    }
}

GetValueOrDefault varavaihtoehdolla

Välittäkää argumentti, jos haluatte määrittää oman varavaihtoehdon: GetValueOrDefault(99) palauttaa arvon 99, kun arvo on null.

using System;

class Program {
    static void Main() {
        int? n = null;
        Console.WriteLine(n.GetValueOrDefault(99));
        int? m = 7;
        Console.WriteLine(m.GetValueOrDefault(99));
    }
}

Toimintamalli: tarkista ja käytä

Yleinen toimintamalli yhdistää HasValue- ja Value-ominaisuudet selkeäksi haaraksi.

using System;

class Program {
    static void Describe(int? score) {
        if (score.HasValue)
            Console.WriteLine("Score is " + score.Value);
        else
            Console.WriteLine("No score yet");
    }
    static void Main() {
        Describe(88);
        Describe(null);
    }
}

Implisiittinen muunnos takaisin

Voitte sijoittaa nullablen tavalliseen tyyppiin vasta, kun olette varmistaneet arvon olemassaolon ja lukeneet Value-ominaisuuden.

using System;

class Program {
    static void Main() {
        int? maybe = 15;
        if (maybe.HasValue) {
            int real = maybe.Value;
            Console.WriteLine(real + 5);
        }
    }
}

Nullable-tyypin oletusarvo

Nullable-tyyppi, jolle ei ole määritetty arvoa erikseen, saa oletusarvokseen null, joten HasValue on false.

using System;

class Program {
    static void Main() {
        int? n = default;
        Console.WriteLine(n.HasValue);
    }
}

Käyttö koosteissa

Käykää data läpi ja ohittakaa null-arvot HasValue-ominaisuuden avulla, jotta voitte laskea summat turvallisesti.

using System;

class Program {
    static void Main() {
        int?[] readings = { 10, null, 5, null, 8 };
        int sum = 0;
        foreach (var r in readings)
            if (r.HasValue) sum += r.Value;
        Console.WriteLine(sum);
    }
}

GetValueOrDefault silmukoissa

GetValueOrDefault voi yksinkertaistaa koodia tilanteissa, joissa null-arvo halutaan käsitellä nollana.

using System;

class Program {
    static void Main() {
        int?[] readings = { 10, null, 5 };
        int sum = 0;
        foreach (var r in readings)
            sum += r.GetValueOrDefault();
        Console.WriteLine(sum);
    }
}

Pikatesti

Testatkaa nullable-ominaisuuksien tuntemuksenne.

Kertaus

HasValue kertoo, sisältääkö nullable-arvo arvon, ja Value noutaa sen. Null-arvon Value-ominaisuuden lukeminen kuitenkin aiheuttaa poikkeuksen.

GetValueOrDefault() palauttaa turvallisesti arvon tai varavaihtoehdon, joka voi olla tyypin oletusarvo tai itse määrittämänne arvo. Siksi se sopii erinomaisesti summien laskemiseen ja turvalliseen lukemiseen.

Aloita maksutta

Opi C# tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
93
Oppitunnit
346

Usein kysytyt kysymykset

Onko oppitunti ”HasValue- ja Value-ominaisuudet” ilmainen?

Kyllä – oppitunnin ”HasValue- ja Value-ominaisuudet” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko C# Academy-kurssin, päivitä CoddyKit PROhon. C# Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”HasValue- ja Value-ominaisuudet”?

Tarkastelkaa nullable-arvoja ja käyttäkää niitä turvallisesti. Harjoittelet C# Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni C# Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin C# Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”HasValue- ja Value-ominaisuudet”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä C# Academy-oppitunnilla?

Kyllä. Jokainen C# Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Nullable-arvotyyppien esittely
  2. HasValue- ja Value-ominaisuudet
  3. Null-yhdistämisoperaattorit
  4. Nullable-arvot laskutoimituksissa
← Takaisin: C# Academy