gpt4 book ai didi

c# - 在 C# 中,是否可以有一个大数组,然后是指向较大数组的子部分的较小数组?

转载 作者:太空宇宙 更新时间:2023-11-03 19:01:05 24 4
gpt4 key购买 nike

我想要一个数组,将我类的所有参数保存在一个数组中,然后让每个参数指向它们在大数组中的位置。

我想这样做的原因是因为我要优化一个基于所述参数的函数,但是最小化要求所有参数都在一个数组中——我不想复制这个数组在每一步都来回移动——我宁愿让各个参数指向它们在主数组中的位置。像这样:

class myClass{
int nVariables;
public double[] parameters; //length = X * nVarialbes
public double[] A; //length = X
public double[] B; //length = X
public double[] C; //length = X
}

其中 parameters 实际上类似于 [a1,a2,a3,b1,b2,b3,c1,c2,c3](其中 X== 3 在这个例子中) - 每个参数的数量在这里是相同的,但我更愿意一个允许它是通用的解决方案。

这也将允许我更改 ABC 的元素,并更新保存它们的数组。

我需要将包含所有数据的数组作为单个连续数组进行优化,因此仅执行 parameters = new double[]{A,B,C}; 是行不通的- 除非有一种方法我可以像访问单个数组一样访问它;我的理解是锯齿状数组虽然在内存中不连续,而且我对矩形数组不够熟悉,无法在这里做我想做的事。

最佳答案

这在 .NET 中是不可能的。数组不是指针。

为此,您必须使用数组以外的类型。如果你想引用数组的一部分,你可以使用 ArraySegment<T>类型。您还可以创建自定义 IList<T>包装数组的一部分。

也许答案会变成没有实际的方法来实现你想要的。我相信正在做的工作是向 .NET 添加“切片”,这些切片能够以您想要的方式引用内存范围。这项工作正在 Github 上的 corefxlab 存储库中完成。

关于c# - 在 C# 中,是否可以有一个大数组,然后是指向较大数组的子部分的较小数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35815330/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com