問題
您希望通過將所有ArrayList對象替換為相應的泛型版本以提高應用程序的效率,並使得代碼更易於使用。當結構體或其他值類型存儲在這些數據結構中時,會導致裝箱/拆箱操作,這時就需要這麼做。
解決方案
使用更有效率的泛型類System.Collections.Generic.List來替換已存在的System.Collection.ArrayList類。
下面是使用System.Collection.ArrayList對象的簡單例子:
public static void UseNonGenericArrayList()
{
// 創建一個ArrayList.
ArrayList numbers = new ArrayList();
numbers.Add(1); // 導致裝箱操作
numbers.Add(2); // 導致裝箱操作
// 顯示ArrayList內的所有整數
// 每次迭代都導致拆箱操作
foreach (int i in numbers)
{
Console.WriteLine(i);
}
numbers.Clear();
}
相同的代碼使用了System.Collections.Generic.List對象
public static void UseGenericList()
{
// 創建一個List.
List<int> numbers = new List<int>();
numbers.Add(1);
numbers.Add(2);
// 顯示List中的所有整數.
foreach (int i in numbers)
{
Console.WriteLine(i);
}
numbers.Clear();
}