Sdílet prostřednictvím


Typy s povolenou hodnotou Null (Průvodce programováním v C#)

Typy s možnou hodnotou Null jsou instance Nullable struktury.Testovíní typu může představovat správný rozsah hodnot jeho základní typ hodnoty, plus další null hodnotu.Například Nullable<Int32>, výraznější "Nepovinných Int32," lze přiřadit libovolnou hodnotu od -2147483648 do 2147483647 nebo může být přiřazen null hodnotu.A Nullable<bool> mohou být přiřazeny hodnoty truefalse, nebo null. Přiřadit null typy číselná nebo logická je zvláště užitečné při jednání s databází a další typy dat, které obsahují prvky, které nemusí být přiřazena hodnota.Logické pole v databázi můžete například ukládat hodnoty true nebo false, nebo může být definován.

class NullableExample
{
    static void Main()
    {
        int? num = null;

        // Is the HasValue property true? 
        if (num.HasValue)
        {
            System.Console.WriteLine("num = " + num.Value);
        }
        else
        {
            System.Console.WriteLine("num = Null");
        }

        // y is set to zero 
        int y = num.GetValueOrDefault();

        // num.Value throws an InvalidOperationException if num.HasValue is false 
        try
        {
            y = num.Value;
        }
        catch (System.InvalidOperationException e)
        {
            System.Console.WriteLine(e.Message);
        }
    }
}

Příklad zobrazí výstup:

num = Null

Nullable object must have a value.

Další příklady naleznete v tématuPoužití typů s povolenou hodnotou Null (Průvodce programováním v C#)

Přehled nepovinných typů

Typy s možnou hodnotou null mají následující charakteristiky:

  • Typy s možnou hodnotou Null představují typ hodnoty proměnných, které lze přiřadit hodnotu null.Testovíní typu na základě typu odkaz nelze vytvořit.(Typy podporují již odkaz null hodnota.)

  • Syntaxe T? je zkrácený zápis pro Nullable, kde T je typ hodnoty.Dvě formy jsou zaměnitelné.

  • Stejně jako běžná hodnota typu, například přiřadit hodnotu Null typu int? x = 10; nebo double? d = 4.108.Testovíní typu lze také přiřadit hodnotu null: int? x = null.

  • Použití Nullable.GetValueOrDefault metoda vrátí přiřazenou hodnotu nebo výchozí hodnotu pro základní typ, pokud je hodnota null, například int j = x.GetValueOrDefault();

  • Použití HasValue a Value vlastnosti jen pro čtení k testování null a načíst hodnotu, jak je znázorněno v následujícím příkladu:if(x.HasValue) j = x.Value;

    • HasValue Vlastnost vrátí true Pokud proměnná obsahuje hodnotu, nebo false Pokud je null.

    • Value Vlastnost vrací hodnotu, pokud je přiřazen.V opačném případě je vyvolána InvalidOperationException.

    • Výchozí hodnota pro HasValue je false.Value Vlastnost nemá žádnou výchozí hodnotu.

    • Můžete také použít == a != operátory Testovíní typu, jak je znázorněno v následujícím příkladu:if (x != null) y = x;

  • Použití ?? operátor přiřazení výchozí hodnotu, která bude použita Testovíní typu, jehož aktuální hodnota je null je například přiřazen-Testovíní typuint? x = null; int y = x ?? -1;

  • Vnořené typy s možnou hodnotou Null nejsou povoleny.Nebude zkompilován následující řádek:Nullable<Nullable<int>> n;

Související oddíly

Další informace:

Specifikace jazyka C#

Další informace najdete v tématu Specifikace jazyka C#. Specifikace jazyka je úplným a rozhodujícím zdrojem pro syntaxi a použití jazyka C#.

Viz také

Referenční dokumentace

Nullable

Koncepty

Průvodce programováním v C#

Další zdroje

Visual C#

Referenční dokumentace jazyka C#

Co přesně znamená "zrušeno" střední?