-4

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

4

2 回答 2

2

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

今天库的某些部分不处理泛型类型也是一样的。

顺便说一句,Anders Hejlsberg提到这是他对 C# 设计感到遗憾的事情之一。

于 2012-11-07T20:42:43.900 回答
0

在 C# 中存在引用而不是引用的对象。不用于引用的对象是整数、字节、浮点数、布尔值……对于这些对象,您需要设置一个初始值,并且它们还有一个默认值,如果您不知道,您可以使用default()函数来获取它。另一方面,我们有引用对象,主要是 c# 对象(类),其默认值为null.

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

我希望这个答案有助于让事情变得更清楚......

于 2012-11-07T20:55:56.657 回答