簡體   English   中英

如何使用運行時確定的維度初始化C#數組?

[英]How do I initialize a C# array with dimensions decided at runtime?

並感謝你的期待。

我有一個2D c#數組,它有50個作為其維度之一。 另一個維度取決於某個數據庫中的行數,並在運行時決定。 我該如何初始化這樣的數組呢?

目前我對單行的初始化看起來像這樣,但我確信有更好的方法來做到這一點,更有效率:)

temp = new Double[50,1] { {0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},
                                {0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},{0},
                                {0},{0},{0},{0},{0},{0},{0},{0},{0},{0}};

只需在運行時使用第二維的整數變量初始化數組。

double[,] = new double[50, v];

C#會自動將所有雙精度初始化為零,因此在您的特定情況下,您無需顯式初始化值。

正如Toby所說 ,你不需要明確將double值設置為零,因為default(double) == 0.0

但是,如果要將數組的所有成員初始化為除數組類型的默認值以外的某個值,則可以始終執行以下操作:

static T[,] GetInitializedArray<T>(int width, int height, T value)
{
    var array = new T[width, height];
    for (int x = 0; x < width; ++x)
    {
        for (int y = 0; y < height; ++y)
        {
            array[x, y] = value;
        }
    }

    return array;
}

這將允許您編寫如下代碼:

double[,] temp = GetInitializedArray(50, 1, 0.0);
double[,] temp = new double[50,1];

double[][] temp = new double[50][];

有關陣列的更多信息,請查看此處

如果數組的第二個暗淡可以改變使用鋸齒狀陣列

double [][] temp = new double [50][]; 

當您知道陣列暗淡的確切大小時,您可以設置它。

temp[index] = new double[length];

如果它總是具有矩形尺寸,請使用以下構造

double [,] temp = new double[50, length];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM