空引用异常是程序失败的主要来源之一。托尼霍尔称这是他十亿美元的错误。所以我特别期待C#8和新的可空引用类型功能。我想我已经很好地掌握了这个功能以及它对我的代码意味着什么。虽然有一个方面我正在努力解决这个问题,这就是default
的行为方式。
目前在C#default(string)
中将返回null。但是当C#8出现时,做string x = default(string);
这样的事情肯定会让编译器直接发出警告。看起来这有点悖论。我也想知道default(string?)
是否可能以及它甚至会返回什么。我想它必须为空,这只会增加我的困惑。
我认为此功能尚未预览发布,但我想知道是否有人知道如何处理此功能。
答案 0 :(得分:5)
现在可以回答这个问题,而不是等待C#8发布。 C#现在“开放”开发,所以只需自己动手到SharpLab,选择NullabaleReferenceTypes
分支并尝试代码。
它提供warning CS8600: Cannot convert null to non-nullable reference.
,default
引用类型为null
,null
不应分配给不可为空的string
。
如果您更喜欢在VS2017中测试预览,a preview plugin is available for the IDE, too。