Tag: nullable

为什么GetType返回System.Int32而不是Nullable ?

为什么这个片段System.Int32的输出而不是Nullable ? int? x = 5; Console.WriteLine(x.GetType());

Nullable 的装箱/拆箱行为怎么可能?

我今天早些时候发生的事情让我摸不着头脑。 任何Nullable类型的变量都可以赋值为null 。 例如: int? i = null; 起初我无法看到如果不以某种方式定义从object到Nullable的隐式转换,这将是如何可能的: public static implicit operator Nullable(object box); 但是上面的运算符显然不存在,好像它确实如此,那么以下内容也必须是合法的,至少在编译时(它不是): int? i = new object(); 然后我意识到也许Nullable类型可以定义一个隐式转换到一些永远无法实例化的任意引用类型,如下所示: public abstract class DummyBox { private DummyBox() { } } public struct Nullable where T : struct { public static implicit operator Nullable(DummyBox box) { if (box == null) { return new Nullable(); […]