我无法将动态值分配给double的数组。如果我保持静止,我就能做到。帮助我。
我已将数组定义为double,其大小可以是动态的。然后我计算了一些值,并希望将该值赋给这个双数组 我做了..
double[] entropy_db_col;
但是我收到了一个错误。数组超出索引
如果我计算(double)entropy_db - (double)a
,我会得到一个静态值。
即使我entropy_db_col[0] = (double)entropy_db - (double)a;
,我也会收到错误?我该怎么办 ?
然后我想找到这个数组中最大的值?这段代码对吗?
largest = Convert.ToInt32(entropy_db_col[0].ToString());
请帮帮我 这会很棒。
我解决了这个问题,但现在问题是:
我得到entropy_db_col [0]值,然后..当我迭代并获得entropy_db_col [1]值时,entropy_db_col [0]的值变为0.类似地,当我得到entropy_db_col [2]时,entropy_db_col的值[1] ]和entropy_db_col [0]变成0 ..我该怎么办?
答案 0 :(得分:3)
使用data.count创建内存
之前使用
entropy_db_col=new double[data.count]
答案 1 :(得分:0)
double[]
不是动态数组,而是一个未定义大小的数组。必须首先使用具体大小定义它,例如new double[data.Count]
才能使用它,但这会导致其大小固定。
如果您想要一个可以随时更改大小的数组,请使用List<double>
代替System.Collections.Generic
命名空间。
using System.Collections.Generic;
...
List<double> entropy_db_col = new List<double>();
for (int i = 0; i < data.Count; i++)
{
\\some calculation
entropy_db_col.Add((double)entropy_db - (double)a);
}
要查找.Net 3.5或更高版本中的最大值,您可以使用:
using System.Linq;
...
double largest = entropy_db_col.Max();
或者,如果您使用的是3.5以上的.Net版本,则可以使用:
double largest = entropy_db_col[0];
for (int j = 1; j < entropy_db_col.Length; j++)
{
if (largest < entropy_db_col[j])
{
largest = entropy_db_col[j];
}
}