是C#Dictionary <string,List <string >> .GetObjectData()(序列化)一致吗?

She*_*evy 5 .net c# serialization

我知道字典不会按照添加它们的顺序存储它们的键值对,但是如果我将相同的键值对(可能以不同的顺序)添加到两个不同的字典并序列化结果,那么数据将存档是相同的?

编辑:为了澄清,我要具体询问GetObjectData()的输出,而不是任何特定的序列化器.请考虑以下代码:

Dictionary<string,List<string>> dict1 = new Dictionary<string,List<string>>();
Dictionary<string,List<string>> dict2 = new Dictionary<string,List<string>>();
string key11 = "key1";
string key12 = "key1";
string key21 = "key2";
string key22 = "key2";
List<string> values11 = new List(1);
List<string> values12 = new List(1);
List<string> values21 = new List(1);
List<string> values22 = new List(1);
values11.add("value1");
values12.add("value1");
values21.add("value2");
values22.add("value2");
dict1.add(key11, values11);
dict2.add(key22, values22);
dict1.add(key21, values21);
dict2.add(key12, values12);
Run Code Online (Sandbox Code Playgroud)

dict1和dict2会为GetObjectData()返回相同的东西吗?如果没有,为什么不呢?

Chr*_*fer 4

无论是否是这样,最终都会成为一个实现细节,在未来的版本和/或替代实现中可能无法得到保证;因此,我建议至少编写一个测试来验证它并可以作为标准测试的一部分运行。但是,如果您正在实现一个绝对依赖于它的解决方案,那么可能值得编写自己的序列化器......