Jak: określenie typu null (Podręcznik programowania C#)
Można użyć C# typeof operatora do tworzenia Type obiekt, który reprezentuje typu null:
System.Type type = typeof(int?);
Można również użyć klasy i metody System.Reflection obszaru nazw do generowania Type obiektów, które reprezentują typy Nullable.Jednak próby uzyskania informacji o typie z Nullable zmiennych w czasie wykonywania przy użyciu GetType metody lub is jest wynikiem operatora, Type obiekt, który reprezentuje typ podstawowy nie Nullable wpisz sam.
Wywołanie GetType na Nullable typu powoduje, że operacja boksie mają być wykonywane, gdy typ jest niejawnie konwertowane na Object.Dlatego GetType zawsze zwraca Type obiekt, który reprezentuje typ podstawowy typem niewymaganym.
int? i = 5;
Type t = i.GetType();
Console.WriteLine(t.FullName); //"System.Int32"
C# jest operator prowadzi się również w typie podstawowym Nullable.Dlatego nie można używać is do ustalenia, czy zmienna jest typem niewymaganym.Poniższy przykład pokazuje, że is operator traktuje Nullable <int> Zmienna jak int.
static void Main(string[] args)
{
int? i = 5;
if (i is int) // true
//…
}
Przykład
Użyć następującego kodu w celu ustalenia czy Type obiekt reprezentuje typem niewymaganym.Należy pamiętać, że kod ten zawsze zwraca wartość false, jeśli Type obiekt został zwrócony z wywołania GetType, jak to zostało wyjaśnione we wcześniejszej części tego tematu.
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>)) {…}