你好,我有C#数组的一个问题。 我需要一个阵列的一些数据存储在那里...我的代码是
double[] ATmittelMin;
ATmittelMin[zaehlMittel] = Gradient(x, xATmax, y, yATmax);
但是编译器说:我如何定义没有一个固定大小的双数组没有定义的变种? 非常感谢!
你好,我有C#数组的一个问题。 我需要一个阵列的一些数据存储在那里...我的代码是
double[] ATmittelMin;
ATmittelMin[zaehlMittel] = Gradient(x, xATmax, y, yATmax);
但是编译器说:我如何定义没有一个固定大小的双数组没有定义的变种? 非常感谢!
数组总是固定的大小,并已到,像这样定义:
double[] items1 = new double[10];
// This means array is double[3] and cannot be changed without redefining it.
double[] items2 = {1.23, 4.56, 7.89};
所述List<T>
类使用一个阵列中的背景,当它运行的空间重新定义它:
List<double> items = new List<double>();
items.Add(1.23);
items.Add(4.56);
items.Add(7.89);
// This will give you a double[3] array with the items of the list.
double[] itemsArray = items.ToArray();
你可以通过一个迭代List<T>
就像你的数组:
foreach (double item in items)
{
Console.WriteLine(item);
}
// Note that the property is 'Count' rather than 'Length'
for (int i = 0; i < items.Count; i++)
{
Console.WriteLine(items[i]);
}
从我看到你没有申报的zaehlMittel
变量。 我想这就是编译器抱怨。
除此之外,即使你当然可以判断变量的值编程,你想的那一刻创建一个数组的大小必须是已知的。 这是阵列工作方式。
如果你不能做到这一点很容易,我建议使用某种动态的数据结构,如列表或一组。 然后,一旦所有的元素都被加入,你当然还可以自由地创建一个数组,因为到那个时候,你知道的元素(即使有方便的方法的数量等toArray()
即使将采取照顾)。
您可以使用它之前,实例化数组:
double[] ATmittelMin = new double[10];
ATmittelMin[zaehlMittel] = Gradient(x, xATmax, y, yATmax);
该弹簧想到显而易见的解决方案是使用一个列表:
List<double> ATmittelMin = new List<double>();
ATmittelMin.Add(Gradient(x, xATMax, y, yATMax);
但是,如果你不想从列表中的阵列可以在以后成长数组转换:
double[] ATmittelMin = new double[10];
// Some code
int index = some_value;
if (index >= TmittelMin.Length)
{
Array.Resize(ATmittelMin, index+5); // So we're not constantly resizing the array
}
因为你做了很多的工作,这不是理想的List
比你可以更有效地大概很多-做幕后。