检查数组列表是否包含c#中的数组
check if a list of array contains an array in c#
我在 C# 中工作,我有一个整数数组列表和一个数组。我需要检查列表是否包含该特定数组。 list.Contains(T item) 方法没有提供所需的输出,所以我写了一个自定义方法
static bool CheckContains( List<int[]> forbiddenChoice, int[] finalChoice)
{
for (int i = 0; i < forbiddenChoice.Count; i++)
{
if(Array.Equals(forbiddenChoice[i], finalChoice))
{
return true;
}
}
return false;
}
尽管如此,即使我传递了一个包含在列表中的数组,此方法也总是 returns false。
如何解决问题?
使用 System.Linq
中的 SequenceEqual 方法
static bool CheckContains(List<int[]> forbiddenChoice, int[] finalChoice)
{
for (int i = 0; i < forbiddenChoice.Count; i++)
{
if (forbiddenChoice[i].SequenceEqual(finalChoice))
{
return true;
}
}
return false;
}
您可以使用Enumerable.SequenceEqual
if (forbiddenChoice[i].SequenceEqual( finalChoice))
{
return true;
}
Array.IsEqual 将 return 为真,只要两个变量都引用同一个对象:
int[] array1 = { 1, 4, 5 };
int[] array5 = { 1, 4, 5 };
bool test02 = array5.Equals(array1); // returns False
array5 = array1;
test02 = array5.Equals(array1); // returns True
我在 C# 中工作,我有一个整数数组列表和一个数组。我需要检查列表是否包含该特定数组。 list.Contains(T item) 方法没有提供所需的输出,所以我写了一个自定义方法
static bool CheckContains( List<int[]> forbiddenChoice, int[] finalChoice)
{
for (int i = 0; i < forbiddenChoice.Count; i++)
{
if(Array.Equals(forbiddenChoice[i], finalChoice))
{
return true;
}
}
return false;
}
尽管如此,即使我传递了一个包含在列表中的数组,此方法也总是 returns false。 如何解决问题?
使用 System.Linq
static bool CheckContains(List<int[]> forbiddenChoice, int[] finalChoice)
{
for (int i = 0; i < forbiddenChoice.Count; i++)
{
if (forbiddenChoice[i].SequenceEqual(finalChoice))
{
return true;
}
}
return false;
}
您可以使用Enumerable.SequenceEqual
if (forbiddenChoice[i].SequenceEqual( finalChoice))
{
return true;
}
Array.IsEqual 将 return 为真,只要两个变量都引用同一个对象:
int[] array1 = { 1, 4, 5 };
int[] array5 = { 1, 4, 5 };
bool test02 = array5.Equals(array1); // returns False
array5 = array1;
test02 = array5.Equals(array1); // returns True