Я тестировал несколько типов с нулевым значением, и он не работал так, как я ожидал:
int? testInt = 0;
Type nullableType = typeof(int?);
Assert.AreEqual(nullableType, testInt.GetType()); // not the same type
Это также не работает:
DateTime? test = new DateTime(434523452345);
Assert.IsTrue(test.GetType() == typeof(Nullable)); //FAIL
DateTime? test = new DateTime(434523452345);
Assert.IsTrue(test.GetType() == typeof(Nullable<>)); //STILL FAIL
Мой вопрос в том, почему testInt.GetType() возвращает int, а typeof (int?) возвращает истинный тип NULL?