【发布时间】:2009-05-06 16:50:47
【问题描述】:
自从 .net 2.0 中引入这个概念以来,我一直在寻找一些好的指导。
为什么我想在 c# 中使用不可为空的数据类型? (一个更好的问题是我为什么不默认选择可空类型,并且仅在明确有意义时才使用不可空类型。)
选择一个可以为空的数据类型而不是它的不可为空的对等体是否有“显着”的性能影响?
我更喜欢对照 null 而不是 Guid.empty、string.empty、DateTime.MinValue、
有没有人总是(最总是)选择可空类型而不是不可空类型?
感谢您的宝贵时间,
【问题讨论】:
-
Jon Skeet 关于 System.Nullable 是一个结构是正确的。所以它会被分配给栈,而不是堆。
-
关于性能打击的问题只有你自己来回答;您是知道“重要”对您的客户意味着什么的人。但是命中应该是最小的——一个可为空的 int 与一个 int 加一个指示它是否为空的 bool 标志几乎完全相同; Nullable
类型只是将 int 与 flag 打包的便捷方式。