Val*_*yev 12 c# comparison serialization
给定一个类的两个实例,通过首先对它们进行序列化然后比较字节数组(或者可能是数组的哈希值)来比较它们是一种好的和可靠的做法.这些对象可能具有复杂的层次结构属性,但序列化应尽可能深入.
相比之下,我指的是确保原始类型的所有属性具有相等值的过程,复杂类型的属性具有相等的原始类型属性等.至于集合属性,它们应该彼此相等:相等的元素,相同的位置:
{'a','b','c'} != {'a','c','b'}
{new Customer{Id=2, Name="abc"}, new Customer {Id=3, Name="def"}}
!=
{new Customer{Id=3, Name="def"}, new Customer {Id=2, Name="abc"}}
Run Code Online (Sandbox Code Playgroud)
但
{new Customer{Id=2, Name="abc"}, new Customer {Id=3, Name="def"}}
==
{new Customer{Id=2, Name="abc"}, new Customer {Id=3, Name="def"}}
Run Code Online (Sandbox Code Playgroud)
通过序列化我的意思是标准的.NET二进制格式化程序.
谢谢.
您要求保证序列化表示将匹配.这将是非常难以实现的,BinaryFormatter是一个复杂的类.特别是具有对齐填充的序列化结构可能是潜在的问题.
更简单的是提供一个不匹配的例子.System.Decimal具有不同的字节模式,用于0.01M和0.010M之类的值.它的运算符==()表示它们是相等的,它的序列化字节[]不会.
| 归档时间: |
|
| 查看次数: |
952 次 |
| 最近记录: |