【发布时间】:2017-06-22 11:25:53
【问题描述】:
假设我有对象 Foo 和 Bar;和 3 个名为 A、B 和 C 的元组。
A = (Foo, Bar)
B = (Bar, Foo)
C = (Foo, Bar)
我想知道它们的元素是否相同,不考虑元素的顺序。所以我想要的结果是;
A.HasSameElementsWith(B) -> True
A.HasSameElementsWith(C) -> True
B.HasSameElementsWith(C) -> True
我知道我可以运行一个嵌套循环来比较它们的每个元素。大致如下:
foreach (itemA in A)
{
bool flag = false;
foreach (itemB in B)
{
if(itemA == itemB)
{
flag = true;
break;
}
}
if (!flag) return false;
}
return true;
但这似乎效率低下。有没有更方便的方法来做到这一点?
注意:
我使用的是泛型,所以Foo 和Bar 可以是任何类型。但它们将是同一类型。 (即Foo的类型将与Bar的类型相同)
【问题讨论】:
-
排序或查找是加快速度的常用方法
-
@doctorlove 排序也出现在我的脑海中,但是查找是什么意思?如果您能详细说明,我将不胜感激。
-
你知道你的
==只会比较引用而不是相等的 -
@Tim 很抱歉造成混淆。我觉得现在好多了。
-
根据编程语言中元组的大多数定义,元组是一组有序元素,这意味着你几乎必须自己编写这个比较。
标签: c# .net comparison tuples c#-7.0