首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么"null“出现在C#和Java中?

为什么"null“出现在C#和Java中?
EN

Stack Overflow用户
提问于 2008-10-07 11:30:37
回答 14查看 6.3K关注 0票数 77

我们注意到我们用C# (或Java)开发的软件中的许多bug都会导致NullReferenceException。

语言中包含"null“有什么原因吗?

毕竟,如果没有"null",我就不会有bug,对吧?

换句话说,语言中的什么功能在没有null的情况下不能工作?

EN

回答 14

Stack Overflow用户

发布于 2008-10-07 11:37:56

空性是引用类型的自然结果。如果你有一个引用,它必须引用某个对象--或者是空的。如果要禁止空性,则必须始终确保每个变量都是用某个非空表达式初始化的-即使这样,如果在初始化阶段读取变量,也会出现问题。

你会如何建议删除无效的概念?

票数 30
EN

Stack Overflow用户

发布于 2009-01-28 17:41:05

像面向对象编程中的许多事情一样,这一切都要追溯到ALGOL。Tony Hoare just called it his "billion-dollar mistake."如果有什么不同的话,那就是轻描淡写。

这里是关于如何使可空性不再是a really interesting thesis中的缺省值的a really interesting thesis。与C#的相似之处显而易见。

票数 20
EN

Stack Overflow用户

发布于 2008-10-07 11:39:24

删除null不会解决太多问题。对于在init上设置的大多数变量,您都需要有一个默认引用。与空引用异常不同,你会得到意外的行为,因为变量指向了错误的对象。至少空引用失败得很快,而不是导致意外的行为。

您可以查看null-object模式来解决这个问题的一部分

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/178026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档