【发布时间】:2018-07-18 18:00:45
【问题描述】:
空引用异常是程序失败的主要来源之一。托尼·霍尔称之为他的十亿美元错误。所以我特别期待 C# 8 和新的 可为空的引用类型 功能。我想我已经很好地掌握了这个特性以及它对我的代码意味着什么。不过,有一个方面我正在努力解决问题,这就是default 的行为方式。
目前在 C# 中 default(string) 将返回 null。但是当 C# 8 出现时,像string x = default(string); 这样的操作肯定会立即给出编译器警告。这似乎有点悖论。我还想知道default(string?) 是否可行,它甚至会返回什么。我想它必须是 null 这只会增加我的困惑。
我认为目前还没有此功能的预览版,但我想知道是否有人知道如何处理。
【问题讨论】:
-
有一个preview。
-
由于
string将是一个对象,所以default(string)给予null非常有意义。 -
并且this specific question 已被询问和处理。
-
一般来说 - C# 语言设计是在 github 上“公开”完成的。所以这是搜索此类信息的合乎逻辑的地方。
-
@HimBromBeere - 如果您选择了可空引用类型功能并将变量声明为不包含空值,则不会。
标签: c# c#-8.0 nullable-reference-types