我们注意到在C#(或Java)中开发的软件中存在很多错误会导致NullReferenceException.
有没有理由为什么"null"甚至被包括在语言中?
毕竟,如果没有"空",我就没有错,对吧?
换句话说,如果没有null,语言中的哪些功能无法工作?
我正在尝试在Haskell中使用Maybe类型.我查找了返回Maybe的键值元组.如何访问由Maybe包装的数据?例如,我想将Maybe包含的整数与另一个整数相加.
我并不是真正将类型安全作为一个概念,但许多人认为这对于编写良好的代码很重要,并认为对于一些最重要的因素,例如代码可以很好地扩展,可重用,强大等等......它需要是安全的.
像C#这样的语言非常重视类型安全,它们是静态类型的,C#中的泛型比C++模板更安全.即使ArrayList它被认为不是类型安全的,List<>因为它是一个List<object>类型安全比例如a更安全List<dynamic>,我认为这应该是可能的,但肯定是模糊的.
但是我想知道,再次使用C#作为一个例子,为什么还有null.我喜欢并赞同,null但它不符合其他语言的类型安全性.
也许在某些方面'null'提高了性能,防止了所有需要在默认情况下构造的内容,但它还需要额外耗时的运行时检查,以便计算机抛出空异常等等.
String s = null;
int n = s.Length; // error like a type error, even if technically it isn't
Run Code Online (Sandbox Code Playgroud)