我们注意到我们用C# (或Java)开发的软件中的许多bug都会导致NullReferenceException。
语言中包含"null“有什么原因吗?
毕竟,如果没有"null",我就不会有bug,对吧?
换句话说,语言中的什么功能在没有null的情况下不能工作?
发布于 2008-10-07 11:37:56
空性是引用类型的自然结果。如果你有一个引用,它必须引用某个对象--或者是空的。如果要禁止空性,则必须始终确保每个变量都是用某个非空表达式初始化的-即使这样,如果在初始化阶段读取变量,也会出现问题。
你会如何建议删除无效的概念?
发布于 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#的相似之处显而易见。
发布于 2008-10-07 11:39:24
删除null不会解决太多问题。对于在init上设置的大多数变量,您都需要有一个默认引用。与空引用异常不同,你会得到意外的行为,因为变量指向了错误的对象。至少空引用失败得很快,而不是导致意外的行为。
您可以查看null-object模式来解决这个问题的一部分
https://stackoverflow.com/questions/178026
复制相似问题