你好,我有一個C#數組的問題。我需要一個陣列的一些數據存儲在那裏... 我的代碼是定義一個沒有固定大小的雙數組?
double[] ATmittelMin;
ATmittelMin[zaehlMittel] = Gradient(x, xATmax, y, yATmax);
但是編譯器說:沒有定義VAR 我如何定義沒有一個固定大小的雙數組? 非常感謝!
你好,我有一個C#數組的問題。我需要一個陣列的一些數據存儲在那裏... 我的代碼是定義一個沒有固定大小的雙數組?
double[] ATmittelMin;
ATmittelMin[zaehlMittel] = Gradient(x, xATmax, y, yATmax);
但是編譯器說:沒有定義VAR 我如何定義沒有一個固定大小的雙數組? 非常感謝!
陣列始終固定在大小,並且已經對像這樣被定義:
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
正在幕後做的工作 - 可能比你能做得更有效率。
如何遍歷列表 – subprime 2009-06-22 09:04:41
@subprime:foreach(項目中的雙項){...},或通過項目[n]索引器 – 2009-06-22 09:08:50