C#未将对象引用设置到对象的实例(序列化,反序列化时候出现的问题)

                                                   图1

先定义一个只读属性,并进行初始化,用来存储试卷中试题得信息,为了防止用户误操作,改变了文本文件中指定格式得数据,所以要对原文本文件序列化操作,之后在使用反序列化得方式读取文件。

                                                                          图2

将文本文件读取并调用序列化方法。

                                                                        图3

这就是序列化得方法。接下里就得注意下反序列化中将文件读取出来赋值得问题。

                                                                         图4

我圈起来得地方就是将序列化文件读取出来放入得集合中,以后试题文件就都是序列化得方式读取,之前的txt文件读取方式和序列化方式就会被注销掉。

                                                  图5

但是请大家注意,我在序列化前,将Private List<Question>objlistquestion赋了一个Null值,这也就是说,一旦序列化后,那么之前在Question对象中得初始化数据都会被覆盖(相当于没有初始化)。并且序列化后,原方法和序列化方法禁用,反序列化读取得集合结果会被赋值给objlistquestion。结果就是你在前端调用得时候,就会出现【未将对象引用设置到对象的实例】得错误,然后你逐个方法去找,看看有没有初始化,结果发现明明都初始化了呀怎么还是报这个错误,其实就在这里。

解决方法:

将序列化得文件先删掉,从新执行一遍序列化,但是图5中Private List<Question>objlistquestion=null,要改为Private List<Question>objlistquestion;这样再执行一遍就ok了。

这个问题困扰了我半天得时间,真的是不好发现,希望这篇文章能帮助像我一样得人。

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韦_恩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值