You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断C#引用类型是否为可空引用类型?求官方替代方案

官方解决方案:使用NullabilityInfoContext

你可以使用.NET 5及以后版本提供的System.Reflection.NullabilityInfoContext类,这是官方专门用于检测类型可空性的API,无需硬编码属性名称,更可靠且符合框架规范。

改造后的检查逻辑示例:

using System.Reflection;

var context = new NullabilityInfoContext();
var properties = typeof(TestClass).GetProperties();

foreach (var property in properties)
{
    var nullabilityInfo = context.Create(property);
    bool isNullable = nullabilityInfo.ReadState is NullabilityState.Nullable;
    Console.WriteLine("Property: {0}, IsNullable: {1}",
        property.Name,
        isNullable);
}

输出结果和之前一致:

Property: NotNullable, IsNullable: False
Property: Nullable, IsNullable: True

补充说明:

  • NullabilityInfoContext会自动解析编译时的可空注解信息,包括引用类型的?标记和Nullable上下文设置,比手动检查属性更准确。
  • 对于嵌套类型、泛型参数等复杂场景,这个API也能正确处理可空性,非常适合反序列化后批量验证非可空成员的场景。

内容的提问来源于stack exchange,提问作者Marcus Kaseder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 05:45:38