【发布时间】:2019-08-24 16:47:39
【问题描述】:
我目前不得不将一些数据放入字典中,以检查某些实际数据是否与我的某些测试的预期数据相匹配。
为了这个任务,我创建了一个看起来像这样的字典:
Dictionary<string, string> dict = new Dictionary<string, string>(){
{a, a},
{b, b},
{c, c}
};
-
我尝试的第一个尝试是比较条件语句中的字典值和键,如下所示,我对这个条件语句的错误结果感到有点惊讶:
if(dict.Keys.Equals(dict.Values)) { ///// received false as a result here ////// } -
当我尝试下一个方法,即遍历所有字典项并比较它们的每个值键对时,它突然给我所有字典项的预期(真实)结果:
foreach (var item in dict) { if (item.Key.Equals(item.Value)) { ///// received true as a result ///// } else { other code here } }
为什么我得到了第一种方法的错误结果?
【问题讨论】:
-
不确定,但我认为这是因为 IEnumerable
的 euquals 检查不检查成员的相等性,而是 IEnumerable 本身... -
Collections 通常不会针对其他集合执行相等性检查。您可以使用 SequenceEquals 扩展方法来比较元素,但这是一个非常边缘的情况,它更多地用于演示目的(为什么您会有一个保证键值相等的字典?)
-
标签: c# .net string dictionary equals