Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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#_Arrays_Position_Offset - Fatal编程技术网

阵列中的位置(偏移量)c#

阵列中的位置(偏移量)c#,c#,arrays,position,offset,C#,Arrays,Position,Offset,我有一个无法有效解决的问题。 我需要做的是: 我在数组中有一个起始位置(在我的例子中是list),我还有一个偏移量。 int类型的偏移量: 当偏移量>0时,我有此项来计算新位置: if (currentPosition + offset < lenght) { return currentPosition + offset; } return (currentPosition + offset)%le

我有一个无法有效解决的问题。 我需要做的是: 我在数组中有一个起始位置(在我的例子中是list),我还有一个偏移量。 int类型的偏移量:

当偏移量>0时,我有此项来计算新位置:

        if (currentPosition + offset < lenght)
        {
            return currentPosition + offset;
        }
        return (currentPosition + offset)%lenght;
if(当前位置+偏移<长度)
{
返回当前位置+偏移量;
}
返回(当前位置+偏移量)%长度;
问题在于偏移量<0时:

        for (int i = 0; i < offset * -1; i++)
        {
            currentPosition -= 1;
            if (currentPosition == -1)
            {
                currentPosition = lenght - 1;
            }
        }
        return currentPosition;
for(int i=0;i
但是这个解决方案真的很慢。 你们有什么想法吗。
提前谢谢。

看起来
currentPosition
是一个整数。因此,您可以只进行计算,如果小于零,则随后进行校正

currentPosition = (currentPosition + offset) % lenght;
if (currentPosition<0)
    currentPosition += lenght;
return currentPosition;
currentPosition=(currentPosition+offset)%length;

如果(currentPosition,它看起来像是一个整数。因此,您可以只进行计算,如果小于零,则随后进行校正

currentPosition = (currentPosition + offset) % lenght;
if (currentPosition<0)
    currentPosition += lenght;
return currentPosition;
currentPosition=(currentPosition+offset)%length;

如果(currentPosition我已经想出了这个函数,希望它有帮助(为了清晰起见,在代码注释中添加):


希望有帮助。

我已经想出了这个函数,希望它有帮助(为了清晰起见在代码注释中添加):

希望对你有所帮助。

(A) 0
(A)0var pos1 = CalcNewPosition(arr, 3, 2); var pos2 = CalcNewPosition(arr, 3, -1); var pos3 = CalcNewPosition(arr, 3, -56);
position = (position + offset + length) % length;
position = (position + (offset % length) + length) % length;