关于 List[][] 大家见过这样的用法么?

imyizhenfeng 2018-05-05 01:50:28
以前使用泛型,数组用 List <List<float>> 能实现,现在接收一个项目,要修改完善前任的程序。他里面有 这么一段,始终无法编译,请大神们看看。


public class SharedData
{
public List<float>[][] zb_list;
public float[][] zb_average_value;

public SharedData()
{
zb_list = new List<float>[360][];
zb_average_value = new float[360][];
for (int idx = 0; idx < zb_list.Length; ++idx)
{
zb_list[idx] = new List<float>[800];
zb_average_value[idx] = new float[800];
}

}
}




//使用过程,button按钮的事件

private void button1_Click(object sender, EventArgs e)
{
AppCoreSharedData apdat = new AppCoreSharedData();


如何给apdat数组赋值?
//}



循环赋值时后总报错。

...全文
1129 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
imyizhenfeng 2018-05-06
  • 打赏
  • 举报
回复
具体值的取出,同三维数组
imyizhenfeng 2018-05-06
  • 打赏
  • 举报
回复
对的,添加数值时候要 new一下,就可以了
imyizhenfeng 2018-05-06
  • 打赏
  • 举报
回复
版主的说明是对的,因为没这样用过,所以在实例化是后总报错,调试也能看出主要里面的值是null。
 public class SharedData
        {
            public List<float>[][] zb_list;
            public float[][] zb_average_value;
            
            public SharedData()
            {
             //   zb_list = new List<float>[360][];
                zb_average_value = new float[360][];
                zb_list = Enumerable.Repeat(Enumerable.Repeat(new List<float>(), 800).ToArray(), 360).ToArray();

            }
        }




//使用过程,button按钮的事件

private void button1_Click(object sender, EventArgs e)
        {
            AppCoreSharedData apdat = new AppCoreSharedData();
        
            apdat.zb_list = Enumerable.Repeat(Enumerable.Repeat(new List<float>(), 800).ToArray(), 360).ToArray();
            for (int j = 0; j < 360; j++)
              for(int k=0;k<800;k++)
            {
                 apdat.zb_list[j][k]=0.1f;

            }

        }

    错误:	无法将类型“float”隐式转换为“System.Collections.Generic.List<float>”	 //}
threenewbee 2018-05-05
  • 打赏
  • 举报
回复
public List<float>[][]是一个由 public List<float>[]构成的数组,而 public List<float>[]又是由 public List<float>构成的数组,而 public List<float>是由float构成的列表 无非就是嵌套多了一点而已。
真相重于对错 2018-05-05
  • 打赏
  • 举报
回复
list<float> 和数组区别大吗??如果从逻辑上看,list 不过是动态的数组
xuzuning 2018-05-05
  • 打赏
  • 举报
回复
不应该随意修改原始代码,未经测试,更不应该乱说!
            List<float>[][] zb_list;
            zb_list = zb_list = Enumerable.Repeat(Enumerable.Repeat(new List<float>(), 800).ToArray(), 360).ToArray();
这样是对的 zb_list 是一个二维交错数组,其每个成员都是一个 List<float> 对象 你的问题在于 zb_list[idx] = new List<float>[800]; 后未对其中的每个 List<float> 实例化
真相重于对错 2018-05-05
  • 打赏
  • 举报
回复
float[][] 是二维交错数组 list<float>[][] 是三围交错数组 应该不能互换
xuzuning 2018-05-05
  • 打赏
  • 举报
回复
apdat.zb_list[j][k] = 0.1f;
       public class SharedData
       {
            public float[][] zb_list;
            public float[][] zb_average_value;
            
            public SharedData()
            {
                 zb_list = Enumerable.Repeat(Enumerable.Repeat(0f, 800).ToArray(), 360).ToArray();
                 zb_average_value = Enumerable.Repeat(Enumerable.Repeat(0f, 800).ToArray(), 360).ToArray();
            }
       }
真相重于对错 2018-05-05
  • 打赏
  • 举报
回复
我大致可以猜到你报什么错了 apdat.zb_list[j][k].add(0.1f); apdat.zb_list[j][k] 其实是list<float> ,List<float>引用类型, 数组虽然new了,但数组里面的内容没有new apdat.zb_list[j][k]=new List<float> apdat.zb_list[j][k].add(0.1f);
真相重于对错 2018-05-05
  • 打赏
  • 举报
回复
报什么错????
imyizhenfeng 2018-05-05
  • 打赏
  • 举报
回复
版主说的对, AppCoreSharedData apdat = new AppCoreSharedData(); for (int j = 0; j < 360; j++) for(int k=0;k<800;k++) { apdat.zb_list[j][k].add(0.1f); } //一直报错,无法通过
xuzuning 2018-05-05
  • 打赏
  • 举报
回复
其实这样初始化蛮好的 List<List<float>> Enumerable.Repeat(new List<float>(Enumerable.Repeat(0f, 800)), 360).ToList() float[][] Enumerable.Repeat(Enumerable.Repeat(0f, 800).ToArray(), 360).ToArray()
imyizhenfeng 2018-05-05
  • 打赏
  • 举报
回复
按照我的方式已经实现,就是他这个我一直理解不了,所以来请教。
xuzuning 2018-05-05
  • 打赏
  • 举报
回复
那就全换成 List <List<float>> 按你熟悉的方式来
imyizhenfeng 2018-05-05
  • 打赏
  • 举报
回复
有这个打算,但他这种定义方式有很多,现在问题就是无法赋值,总报错,我的理解apdat实例化后,apdat.zb_list已经开辟了360*800的空间,但填充数值时候一直报错。哪位大神能实现一下,对apdat.zb_list添加数值。
  • 打赏
  • 举报
回复
“接手”那就把这类代码重做吧。
xuzuning 2018-05-05
  • 打赏
  • 举报
回复
是反编译的代码吧? List<float> 改为 float
imyizhenfeng 2018-05-05
  • 打赏
  • 举报
回复
不是,是源程序,喔理解为二维泛型数组

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧