相关疑难解决方法(0)

没有null的语言的最佳解释

当程序员抱怨空错误/异常时,有人经常会问我们做什么而没有null.

我对选项类型的酷感有一些基本的想法,但我没有最好的表达它的知识或语言技巧.对于普通程序员可以接近的方式写的以下内容有什么好的解释,我们可以指出那个人?

  • 默认情况下,引用/指针的不可取性是可以为空的
  • 选项类型的工作原理包括简化检查空案例的策略
    • 模式匹配和
    • monadic理解
  • 替代解决方案,如消息吃零
  • (我错过了其他方面)

null programming-languages functional-programming nullpointerexception non-nullable

223
推荐指数
7
解决办法
4万
查看次数

为什么C#和Java中存在"null"?

我们注意到在C#(或Java)中开发的软件中存在很多错误会导致NullReferenceException.

有没有理由为什么"null"甚至被包括在语言中?

毕竟,如果没有"空",我就没有错,对吧?

换句话说,如果没有null,语言中的哪些功能无法工作?

c# java null

73
推荐指数
9
解决办法
5691
查看次数

面向对象的编程语言中的引用是否应该默认为不可为空?

空指针被描述为" 十亿美元的错误 ".某些语言具有无法分配空值的引用类型.

我想知道在设计一种新的面向对象语言时是否应该使用默认行为来防止被赋值为null.然后可以使用特殊版本来覆盖此行为.例如:

MyClass notNullable = new MyClass();
notNullable = null; // Error!
// a la C#, where "T?" means "Nullable<T>"
MyClass? nullable = new MyClass();
nullable = null; // Allowed
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,有没有理由不在新的编程语言中这样做?

编辑:

我想补充一点,我博客上的最新评论指出,当在数组中使用时,非可空类型有一个特殊的问题.我还要感谢大家的有益见解.这非常有帮助,对不起,我只能选择一个答案.

language-agnostic null nullable language-design

8
推荐指数
1
解决办法
580
查看次数