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数组赋值?
//}
循环赋值时后总报错。
19 个解决方案
#1
是反编译的代码吧?
List<float> 改为 float
List<float> 改为 float
#2
不是,是源程序,喔理解为二维泛型数组
#3
“接手”那就把这类代码重做吧。
#4
有这个打算,但他这种定义方式有很多,现在问题就是无法赋值,总报错,我的理解apdat实例化后,apdat.zb_list已经开辟了360*800的空间,但填充数值时候一直报错。哪位大神能实现一下,对apdat.zb_list添加数值。
#5
那就全换成 List <List<float>>
按你熟悉的方式来
按你熟悉的方式来
#6
按照我的方式已经实现,就是他这个我一直理解不了,所以来请教。
#7
其实这样初始化蛮好的
List<List<float>>
Enumerable.Repeat(new List<float>(Enumerable.Repeat(0f, 800)), 360).ToList()
float[][]
Enumerable.Repeat(Enumerable.Repeat(0f, 800).ToArray(), 360).ToArray()
List<List<float>>
Enumerable.Repeat(new List<float>(Enumerable.Repeat(0f, 800)), 360).ToList()
float[][]
Enumerable.Repeat(Enumerable.Repeat(0f, 800).ToArray(), 360).ToArray()
#8
版主说的对,
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);
}
//一直报错,无法通过
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);
}
//一直报错,无法通过
#9
报什么错????
#10
我大致可以猜到你报什么错了
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);
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);
#11
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();
}
}
#12
float[][] 是二维交错数组
list<float>[][] 是三围交错数组
应该不能互换
list<float>[][] 是三围交错数组
应该不能互换
#13
不应该随意修改原始代码,未经测试,更不应该乱说!
zb_list 是一个二维交错数组,其每个成员都是一个 List<float> 对象
你的问题在于 zb_list[idx] = new List<float>[800]; 后未对其中的每个 List<float> 实例化
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> 实例化
#14
list<float> 和数组区别大吗??如果从逻辑上看,list 不过是动态的数组
#15
public List<float>[][]是一个由 public List<float>[]构成的数组,而 public List<float>[]又是由 public List<float>构成的数组,而 public List<float>是由float构成的列表
无非就是嵌套多了一点而已。
无非就是嵌套多了一点而已。
#16
版主的说明是对的,因为没这样用过,所以在实例化是后总报错,调试也能看出主要里面的值是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>” //}
#17
对的,添加数值时候要 new一下,就可以了
#18
具体值的取出,同三维数组
#19
#20
#1
是反编译的代码吧?
List<float> 改为 float
List<float> 改为 float
#2
不是,是源程序,喔理解为二维泛型数组
#3
“接手”那就把这类代码重做吧。
#4
有这个打算,但他这种定义方式有很多,现在问题就是无法赋值,总报错,我的理解apdat实例化后,apdat.zb_list已经开辟了360*800的空间,但填充数值时候一直报错。哪位大神能实现一下,对apdat.zb_list添加数值。
#5
那就全换成 List <List<float>>
按你熟悉的方式来
按你熟悉的方式来
#6
按照我的方式已经实现,就是他这个我一直理解不了,所以来请教。
#7
其实这样初始化蛮好的
List<List<float>>
Enumerable.Repeat(new List<float>(Enumerable.Repeat(0f, 800)), 360).ToList()
float[][]
Enumerable.Repeat(Enumerable.Repeat(0f, 800).ToArray(), 360).ToArray()
List<List<float>>
Enumerable.Repeat(new List<float>(Enumerable.Repeat(0f, 800)), 360).ToList()
float[][]
Enumerable.Repeat(Enumerable.Repeat(0f, 800).ToArray(), 360).ToArray()
#8
版主说的对,
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);
}
//一直报错,无法通过
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);
}
//一直报错,无法通过
#9
报什么错????
#10
我大致可以猜到你报什么错了
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);
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);
#11
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();
}
}
#12
float[][] 是二维交错数组
list<float>[][] 是三围交错数组
应该不能互换
list<float>[][] 是三围交错数组
应该不能互换
#13
不应该随意修改原始代码,未经测试,更不应该乱说!
zb_list 是一个二维交错数组,其每个成员都是一个 List<float> 对象
你的问题在于 zb_list[idx] = new List<float>[800]; 后未对其中的每个 List<float> 实例化
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> 实例化
#14
list<float> 和数组区别大吗??如果从逻辑上看,list 不过是动态的数组
#15
public List<float>[][]是一个由 public List<float>[]构成的数组,而 public List<float>[]又是由 public List<float>构成的数组,而 public List<float>是由float构成的列表
无非就是嵌套多了一点而已。
无非就是嵌套多了一点而已。
#16
版主的说明是对的,因为没这样用过,所以在实例化是后总报错,调试也能看出主要里面的值是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>” //}
#17
对的,添加数值时候要 new一下,就可以了
#18
具体值的取出,同三维数组