Typy s možnou hodnotou Null (Příručka programování C#)
Typy s možnou hodnotou Null jsou instance System.Nullable<T> 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;
if (num.HasValue == true)
{
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 možnou hodnotou Null (C# programování Guide)
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<T>, 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<T>.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 System.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 naleznete v tématu Specifikace jazyka C#. Specifikace jazyka je úplným a rozhodujícím zdrojem pro syntaxi a použití jazyka C#.