当前位置 : 主页 > 大数据 > 区块链 >

.net – 使用protobuf-net序列化数组时如何处理空值?

来源:互联网 收集:自由互联 发布时间:2021-06-22
以下语句因NullReferenceException而失败: TypeModel.Create().DeepClone(new string[1]); 检查源代码会发现异常是故意抛出的,这意味着数组中的空值违反了协议缓冲区规范(理所当然,null不是任何值的重
以下语句因NullReferenceException而失败:

TypeModel.Create().DeepClone(new string[1]);

检查源代码会发现异常是故意抛出的,这意味着数组中的空值违反了协议缓冲区规范(理所当然,null不是任何值的重复).

好的,规范是正确的,但如果集合中仍然存在空值,我们该怎么办?有没有解决方案,除了确保没有空值进入我们的集合?

谢谢.

这是一个棘手的问题;在线级,集合只是一个重复的标签 – 每个元素代表一个对象.很简单,没有办法在protobuf规范中直接表示null.

现在,我可能变得脏了,并且对于带有nulls的集合有一些双重标记,但是 – 说实话我认为使用看起来很空的非空对象通常会更好(如果你明白我的意思).在字符串的情况下,也许“”会做(它取决于上下文,真的).

我也愿意接受建议,但是……它需要牢记规范的局限性.

网友评论