检查多个变量没有任何重复值的更好方法
Better way to check that multiple variables doesn't have any duplicated value
我有一些变量,例如这些字符串:
string option1 ,option2, option3, option4;
具有未知值。看来我可以通过这种方式检查它们中没有两个是相等的(没有重复):
if(option1 !=option2 && option1 != option3 &&...)
//
但是如果我有很多变量,那么我怎样才能做到不像上面那样丑陋呢?
我可能会对此使用 LINQ,这当然需要将它们放入一个集合中。
public static bool HasDuplicates<T>(params T[] arr)
{
return arr.Distinct().Count() != arr.Length;
}
当然,您可以这样称呼它:
if(!HasDuplicates(option1 ,option2, option3, option4))
{
// Code
}
可能有更好的方法来 运行 这种比较,但这看起来很简单,如果没有别的,这是一个很好的起点。
此外,我不完全确定您的意思是要确保 option1
不等于任何其他值,还是不存在任何重复项。我选择了更复杂的后一种情况,但如果我猜错了,你可以很容易地 运行 与 Contains
类似的表达式。
你可以得到另一个有不同的数组
int[] s = { 1, 2, 3, 3, 4};
int[] q = s.Distinct().ToArray();
我有一些变量,例如这些字符串:
string option1 ,option2, option3, option4;
具有未知值。看来我可以通过这种方式检查它们中没有两个是相等的(没有重复):
if(option1 !=option2 && option1 != option3 &&...)
//
但是如果我有很多变量,那么我怎样才能做到不像上面那样丑陋呢?
我可能会对此使用 LINQ,这当然需要将它们放入一个集合中。
public static bool HasDuplicates<T>(params T[] arr)
{
return arr.Distinct().Count() != arr.Length;
}
当然,您可以这样称呼它:
if(!HasDuplicates(option1 ,option2, option3, option4))
{
// Code
}
可能有更好的方法来 运行 这种比较,但这看起来很简单,如果没有别的,这是一个很好的起点。
此外,我不完全确定您的意思是要确保 option1
不等于任何其他值,还是不存在任何重复项。我选择了更复杂的后一种情况,但如果我猜错了,你可以很容易地 运行 与 Contains
类似的表达式。
你可以得到另一个有不同的数组
int[] s = { 1, 2, 3, 3, 4};
int[] q = s.Distinct().ToArray();