C#反射的NullReferenceException

背景

xml文件中有些元素的属性被删除,导致文件无法被读取(C#)。

调试之后发现,因为属性被删除,读进来会保持默认值null,在后续的反射中如果用这个null给字符串属性赋值,会抛异常。

另外发现前面还有其他一些属性也被删掉了,但并不会导致异常,只因它们的类型是int。

示例

csharp 复制代码
using System.Reflection;
class Program
{
    public int A
    {
        set;
        get;
    }

    public string B
    {
        set;
        get;
    }

    static void Main(string[] args)
    {
        Program program = new Program();
        PropertyInfo pa = program.GetType().GetProperty("A");
        pa.SetValue(program, null, null);  // 正常
        PropertyInfo pb = program.GetType().GetProperty("B");
        pb.SetValue(program, null, null);  // 异常
    }
}
相关推荐
美团骑手阿豪13 分钟前
C#语法:HashSet与List对比,适合场景
unity·c#
wr14 分钟前
Modbus 读写转换
c#
公子小六19 分钟前
基于.NET的Windows窗体编程之WinForms入门简介
windows·microsoft·c#·.net
CSharp精选营20 分钟前
C# 面试高频题:装箱和拆箱是如何影响性能的?
c#·.net·面试题·装箱·拆箱·c#面试题
我是唐青枫1 小时前
C#.NET SpinLock 深入解析:自旋锁原理、使用边界与性能取舍
c#·.net
似水明俊德1 小时前
13-C#.Net-设计模式六大原则-学习笔记
笔记·学习·设计模式·c#·.net
无心水2 小时前
【时间利器】5、多语言时间处理实战:Go/C#/Rust/Ruby统一规范
golang·rust·c#·时间·分布式架构·openclaw·openclaw变现
似水明俊德3 小时前
16-C#.Net-自研ORM框架-学习笔记
windows·笔记·学习·c#·.net
A_nanda3 小时前
C#类型转换最佳实践
java·jvm·c#
唐青枫3 小时前
C#.NET System.Threading.Lock 深入解析:新一代 lock、底层语义与使用边界
c#·.net