Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.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# - Fatal编程技术网

C# 存储对数组的引用数组

C# 存储对数组的引用数组,c#,C#,我想创建一个数组引用我的数组。这样做的原因是因为我想优化我的快速傅里叶变换算法,使其无分支——或者说,更少分支 其背后的想法是我有两个阵列: Array1和Array2 我需要在for循环中在这两个数组之间进行乒乓,因此我希望存储对数组的引用,如下所示: [0] = Array1Ref [1] = Array2Ref [2] = Array1Ref . . . 可以用C#来做吗?如果是这样,您将如何定义这样一个数组?我需要使用不安全的吗?如果您只想在for循环的每个迭代中访问不同的数组而不使用

我想创建一个数组引用我的数组。这样做的原因是因为我想优化我的快速傅里叶变换算法,使其无分支——或者说,更少分支

其背后的想法是我有两个阵列:

Array1
Array2

我需要在for循环中在这两个数组之间进行乒乓,因此我希望存储对数组的引用,如下所示:

[0] = Array1Ref
[1] = Array2Ref
[2] = Array1Ref
. . .

可以用C#来做吗?如果是这样,您将如何定义这样一个数组?我需要使用不安全的吗?

如果您只想在for循环的每个迭代中访问不同的数组而不使用条件,则可以继续交换两个变量并使用其中一个

var arrayRef = Array1;
var theOtherArrayRef = Array2;
for (...) {
    // use arrayRef in places where you would have accessed the array of array references
    
    ...

    // C# 7 tuple syntax
    (arrayRef, theOtherArrayRef) = (theOtherArrayRef, arrayRef);

    // pre-C# 7:
    /*
    var temp = arrayRef;
    arrayRef = theOtherArrayRef;
    theOtherArrayRef = arrayRef;
    */
}

为什么不在循环结束时交换两个数组变量呢?因为这涉及到使用if语句,例如
if(i%2==0)arr1:arr2
,我正在尝试通过将for循环迭代与一个引用数组对齐来提高速度。这是一次微观优化尝试。这两个数组的类型是否相同?@TheGeneral是的,它们的类型和长度相同。
var someArray=new WhatEverTypeItIs[]
哪一个数组是什么类型的数组C#7元组编译成相同的代码还是不同的?@WDUK我对sharplab.io的简单调查表明,它们编译成不同的IL,但被JIT到相同的ASM代码。@WDUK等等,不,如果我使用数组,IL也是相同的。(我一开始使用int)。