簡體   English   中英

使用列表數組 - 最佳實踐

[英]Using list arrays - Best practices

我有一個#newbie問題。 以下兩個中的優良做法是什么? ...並且列表比數組更慢或更快?

        //Method 1
        int[] i_array = { 2, 0, 110, 53455, 2223 };

        if (someBolean)
        {
            Array.Resize(ref i_array, i_array.Length + 1);
            i_array[i_array.Length - 1] = someIntValue;
        }

        //Method 2
        var i_list = new List<int>();
        i_list.AddRange(new int[] { 2, 0, 110, 53455, 2223 });

        if (someBolean)
            i_list.Add(someIntValue);

需要可以增長或縮小的集合時使用列表。

如果您知道長度並且不想更改它,請使用數組。


您可以使用集合初始值設定項來初始化列表,因此您可以獲得與初始化數組類似的語法:

var list = new List<int> { 2, 0, 110, 53455, 2223 };

if (someBoolean)
{
    list.Add(someIntValue);
}

后者被認為是可變大小集合的最佳實踐。

根據您正在使用的集合類型,Framework類將在內部執行類似於您在第一個示例中執行的操作(除了通過一個元素調整大小,它以更大的大小遞增,因此您有額外的緩沖區空間繼續添加元素)。

但是,一般情況下,您不想重新發明輪子。 該框架提供了大量可變大小的集合類。 使用它們而不是自己編寫。

列表在內部使用數組,因此我希望這兩個數據的性能相同。

使用列表進行編程時比使用原始數組更難產生錯誤,所以我更喜歡列表。

兩者都結束為IEnumerables,因此您可以在兩者上執行類似的操作。 列表的好處是Justin Niessner所說的,可變大小的集合。 此外,調整數組大小將需要框架重新分配內存,而List表現為鏈接列表,只是添加或刪除集合中的元素。

暫無
暫無

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

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