Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 比较两个数组(一个数组中的每个值都有一个增量)_C#_C# 4.0 - Fatal编程技术网

C# 比较两个数组(一个数组中的每个值都有一个增量)

C# 比较两个数组(一个数组中的每个值都有一个增量),c#,c#-4.0,C#,C# 4.0,如何比较两个阵列,以便: array1[i+10]==array2[i] 这永远是真的吗 我知道下面的代码可以比较数组,但是这个具体的例子呢 bool isEqual = Enumerable.SequenceEqual(array1, array2); 老式的方式: int length = array2.Length; bool areEqual = true; for(int i = 0; i < length; i++) { if(array1[i] + 10 = a

如何比较两个阵列,以便:

array1[i+10]==array2[i] 
这永远是真的吗

我知道下面的代码可以比较数组,但是这个具体的例子呢

bool isEqual = Enumerable.SequenceEqual(array1, array2);
老式的方式:

int length = array2.Length;
bool areEqual = true;
for(int i = 0; i < length; i++)
{
    if(array1[i] + 10 = array2[i])
    {
        areEqual = false;
        break;
    }
}

答案取决于您所说的
array1[i+10]==array2[i]
的意思

如果
array2
的值应该比
array1
的值多10个:

使用
Select
创建一个临时数组,将
array1
中的每个值加10,然后与
array2
进行比较:

bool equal2 = Enumerable.SequenceEqual(array1.Select(n => n + 10), array2);
bool equal = Enumerable.SequenceEqual(array1.Skip(10), array2);

如果
array2
的值应与
array1
的值相同,则移动10个位置:

使用
Skip
跳过
array1
的前10个元素,然后与
array2
进行比较:

bool equal2 = Enumerable.SequenceEqual(array1.Select(n => n + 10), array2);
bool equal = Enumerable.SequenceEqual(array1.Skip(10), array2);

请注意,这仅在
array1
array2
多10个元素的情况下有效。这是否意味着
array1
array2
多10个元素?而
array1
的前10个元素不重要吗?不,只是array1中的每个元素比array2中的每个元素多10个,所以如果array1[0]=10,那么array2[0]=20,依此类推,那么您的陈述是错误的。它应该是
array1[i]+10==array2[i]
@DevProg,这与您所尝试的非常不同。您需要的是
array1[i]+10=array2[i]
,因此将语句置于for循环之外。当你问不完整的问题时,你会得到不完整的答案……谢谢@D Stanley,但我想同时比较两个数组,即两个数组中的所有值array1[I+10]=array2[I]@DevProg你不能同时比较“所有值”。甚至
SequenceEqual
也在幕后循环。@DevProg我已经根据你对这个问题的评论调整了我的答案。我建议适当地编辑这个问题。是的,但我不希望隐式地编写for循环。谢谢BJ。但是,我得到了以下错误:无法从用法推断方法“Enumerable.SequenceEqual(IEnumerable,IEnumerable)”的类型参数。尝试显式指定类型参数。数组是字节数组对于字节数组,请将
Select
子句修改为
n=>(byte)(n+10)