You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不使用动态/反射的情况下,根据另一数组维度初始化非锯齿数组?

解决方案

可以使用.NET框架原生的Array.CreateInstance方法实现需求,这是专门用于创建数组的API,无需依赖动态特性或反射,能高效生成指定秩和各维度长度的规整矩形数组。

修改你的代码如下:

Array func(Array x) 
{
    int rank = x.Rank;
    int[] shape = new int[rank];
    for(int i = 0; i < rank; i++)
    {
        shape[i] = x.GetLength(i);
    }
    // 创建指定元素类型、维度长度的矩形数组
    Array ret = Array.CreateInstance(typeof(float), shape);
    
    // 后续处理逻辑示例:遍历赋值
    for (int i = 0; i < ret.Length; i++)
    {
        ret.SetValue(0.0f, Array.IndexToMultiIndex(i, shape));
    }
    
    return ret;
}

关键说明

  • Array.CreateInstance第一个参数指定数组元素类型(这里是typeof(float)),第二个参数是整数数组,每个元素对应目标数组各维度的长度,数组的长度就是最终数组的秩。
  • 创建出的是标准矩形数组(如float[,]、float[,,]等),而非锯齿数组,完全匹配你的需求。
  • 访问或修改元素时,可使用GetValue/SetValue方法;若已知目标数组的秩,也可将返回的Array强转为具体数组类型(如float[,])直接操作。

内容的提问来源于stack exchange,提问作者Lotramus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 00:45:36