C#面试题更新 2026-08-05

请解释 C# 中 nullable 上下文的含义,并说明在项目中可以通过哪些方式对其进行控制。

技术原理C#

考察说明

考查对 C# 可空引用类型特性中 nullable 上下文概念的理解及配置能力。

回答思路

  1. 【回答框架 1】nullable 上下文是 C# 8.0 引入的可空引用类型特性的组成部分,它决定编译器如何处理可空性警告和注解。上下文主要影响两个方面:一是是否启用可空注解,二是是否启用可空警告。
  2. 【回答框架 2】nullable 上下文可以通过项目文件(.csproj)中的 <Nullable> 属性进行全局设置,可选值为 disable、enable、warnings 和 annotations。也可以在源代码中使用 #nullable 指令对局部区域进行控制,支持 enable、disable、restore 和 warnings、annotations 等子选项。
  3. 【回答框架 3】enable 模式表示启用注解和警告,编译器会提示可能为 null 的引用类型,并检查可空性;disable 模式则完全禁用,行为与旧版本类似;warnings 模式只显示警告但不影响注解;annotations 模式只启用注解但不产生警告。
  4. 【回答框架 4】在实际项目中,通常建议启用 nullable 上下文以提升代码安全性,但也可以针对特定文件或代码块使用 #nullable disable 来临时关闭,以兼容旧代码或第三方库。
  5. 【关键点 1】nullable 上下文定义编译器对可空性注解和警告的处理方式。
  6. 【关键点 2】可通过 .csproj 的 <Nullable> 属性全局控制。
  7. 【关键点 3】可使用 #nullable 指令按区域精细控制,支持 enable、disable、restore 等。
  8. 【易错点 1】不要混淆 nullable 上下文与 Nullable<T> 值类型,前者是编译期分析,后者是值类型包装。
  9. 【易错点 2】切勿认为启用 nullable 后程序就绝对安全,运行时仍可能出现空引用异常。