小言_互联网的博客

【C#】截取/复制二维数组

371人阅读  评论(0)

【C#】截取/复制二维数组

使用 System.Buffer.BlockCopy() 方法复制二维数组中的元素时要注意一点:所有的偏移参数都要乘以元素类型的尺寸( sizeof() )。

下面的方法可以从一个二维数组中截取一片数据放到新的二维数组中返回。如果把返回值数组提取到参数中作为目标数组,并添加目标数组的行、列偏移参数,就可以将该方法改成用法和一维数组复制方法一样的二维数组复制方法。

public double[,] CutArray2D(double[,] source, int rowOffset, int columnOffset, int rowCount, int columnCount)
{
    var srcColumnCount = source.GetLength(1);
    var typeSize = sizeof(double);
    var ret = new double[rowCount, columnCount];

    for (int i = 0; i < rowCount; i++)
    {
        var srcOffset = ((rowOffset + i) * srcColumnCount + columnOffset) * typeSize;
        var dstOffset = i * columnCount * typeSize;
        Buffer.BlockCopy(source, srcOffset, ret, dstOffset, columnCount * typeSize);
    }

    return ret;
}

转载:https://blog.csdn.net/qq_21397217/article/details/101458807
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场