gpt4 book ai didi

c#-8.0 - 为什么仍然可以将 null 分配给不可为 null 的引用类型?

转载 作者:行者123 更新时间:2023-12-03 23:07:16 26 4
gpt4 key购买 nike

我很迷惑。
我认为启用 c# 8 和可为空的引用类型将阻止将 null 分配给不可为空的引用类型,但显然这只是编译时的警告,我知道您可以将其强制为错误并停止构建,但我认为这不仅仅是编译器检查。

看这个例子
https://dotnetfiddle.net/4eCs5L

如果运行,仍然可以将 null 分配给不可为 null 的引用类型,为什么在运行时不会抛出错误?

最佳答案

TLDR:向后兼容性

如果可空引用类型是 C# 1 的一部分,那么 null分配给不可为空的类型会发出编译错误。

C# 的问题是已经有很多现有代码没有可空引用类型。 null 上的编译器错误赋值会破坏所有现有的代码或库。

您可以在 C# 程序管理器的 .NET 博客文章中找到完整的解释:https://devblogs.microsoft.com/dotnet/nullable-reference-types-in-csharp/

关于c#-8.0 - 为什么仍然可以将 null 分配给不可为 null 的引用类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61627625/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com