在C#中使用不可为空的引用类型有哪些基本问题?

时间:2012-11-07 20:33:34

标签: c# types language-features c#-5.0 non-nullable

此时C#中不存在非可空类型。很明显,任何其他功能都需要时间和金钱来开发它。这里没有问题。但是我可以看到它有很多好处。最明显的一个是消除对空检查的需要,并且几乎没有空引用异常。因此,假设我是对的,是否存在一个基本问题,使得此功能太昂贵而无法添加到C#中?如果是这样,它是什么?

2 个答案:

答案 0 :(得分:1)

修复语言(和CLR)将是一回事,但主要部分是重写整个.NET Framework将所有库。这将破坏所有现有代码期望或检查null。不重写库的替代方案对于重写的合理性没什么好处。

今天库的某些部分不会处理泛型类型。

顺便说一句,Anders Hejlsberg将mentioned作为他对C#设计感到遗憾的事情之一。

答案 1 :(得分:0)

在C#中,通过引用存在对象而不是。不用于引用的对象是Integers,Bytes,Floats,Booleans,...对于这个对象,你需要设置一个初始值,并且它们也有一个默认值,如果你不知道它可以使用{{1获取它的函数。另一方面,我们有引用对象,主要是c#对象(类),其默认值为default()

假设您有一个Object T的集合,当您使用多个项初始化集合时,所有项都为null(其默认值),具有其他默认类型可能会带来其他问题,例如您如何检测如果这是默认值?,或者当你的对象固有其他对象时,你如何定义默认值(父或者他自己)?,...,当你有很多东西需要定义时建议为编程语言添加新功能。

我希望这个答案有助于使事情变得更加清晰......