【问题标题】:C#: What is the point of making a reference type nullable?C#:使引用类型可为空有什么意义?
【发布时间】:2022-11-26 22:58:32
【问题描述】:

Here 它说:

编译器使用这些注释来帮助您查找代码中潜在的空引用错误。不可为 null 的引用类型和可为 null 的引用类型之间没有运行时差异。编译器不会为不可为 null 的引用类型添加任何运行时检查。好处在于编译时分析。编译器生成警告,帮助您查找和修复代码中潜在的空错误。您声明您的意图,当您的代码违反该意图时,编译器会警告您。

什么是潜在的空错误?使用可空引用类型声明的意图是什么?这对我来说不清楚。

【问题讨论】:

  • System.NullReferenceException
  • 我无法理解你的困惑。我的意思是,如果您正在使用(例如)尚未分配值的变量,则需要“抛出”错误。你习惯用什么语言?也许我们可以引导您找到一个合乎逻辑的正确思维过程,这是有道理的。
  • 您明确声明 null 是引用的正确预期值,并且您的代码将检查 null 以避免 NullReferenceException。如果您忘记进行该检查,那么编译器会生成一个错误,指出疏忽。

标签: c#


【解决方案1】:

最初,所有引用类型变量都可以为空。这意味着您始终必须考虑空引用和相应代码的可能性。如果您的意图是变量永远不会为空,则无法强制执行。如果您将其视为永远不会为 null,那么如果有人错误地将其设置为 null,则在运行时始终有可能出现 NullReferenceException。

现在,您可以指定哪些变量应该可以为空,哪些不应该,编译器会强制执行。如果您尝试将不可为 null 的变量设置为 null,编译器错误将阻止这种情况发生。如果您将可空变量视为绝对不会为空,则编译器警告会提醒您。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 2022-10-25
    • 1970-01-01
    • 2019-12-03
    • 2018-07-18
    • 1970-01-01
    相关资源
    最近更新 更多