我意識到如果你運行的是.NET 1.1,那麼泛型不可用。但是,如果您使用的是.NET 2.0+,那麼使用ArrayList
類比List<object>
有什麼優勢?有沒有使用ArrayList類的任何一點?
基本上,只要你申報的類型爲 T爲System.Object
,那麼爲什麼不用List<T>
類呢?
我意識到如果你運行的是.NET 1.1,那麼泛型不可用。但是,如果您使用的是.NET 2.0+,那麼使用ArrayList
類比List<object>
有什麼優勢?有沒有使用ArrayList類的任何一點?
基本上,只要你申報的類型爲 T爲System.Object
,那麼爲什麼不用List<T>
類呢?
我同意丹尼爾。
此外,還有一些微軟在MSDN上的具體性能信息,比較List<T>
和ArrayList
值得一讀。
http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx
在決定是否使用List或ArrayList類,兩者的 有相似的功能,記住List類 執行在大多數情況下更好,是類型安全的。如果引用類型是 用於List類的T類型,那麼兩個類 的行爲是相同的。但是,如果對於類型T使用值類型,則需要考慮實現和裝箱問題 。
如果值類型用於類型T,則編譯器會專門爲該值類型生成List類的 實現。 這意味着一個列表對象的列表元素不一定是 在可以使用該元素之前裝箱,並且在創建大約500個列表之後 元素被創建的情況下,保存的不是裝箱列表元素的內存是 大於用於生成類實現。
確保用於類型T的值類型實現了IEquatable通用接口 。如果不是,則諸如Contains之類的方法必須調用Object.Equals(Object)方法,該方法將受影響的列表 元素框。如果值類型實現了IComparable接口並且您擁有源代碼,那麼還應實現IComparable通用接口,以阻止BinarySearch和Sort方法從列表元素中刪除 列表元素。如果你沒有自己的源代碼,通過一個IComparer的 對象到二分查找和排序方法
這是你的優勢,使用,而不是使用ArrayList類或寫入的 List類的特定類型的實現 你自己強類型包裝收集。原因是您的實施必須執行.NET Framework爲您所做的工作, 和公共語言運行庫可以共享Microsoft中間代碼 語言代碼和元數據,而您的實現不能。
我不會將它用於任何新的東西,並且我將它從現有的代碼中分解出來,以方便實現。 List消除了許多不必要的類型轉換,提高了性能,同時減少了運行時錯誤的可能性。現在也很流行,大多數擴展方法和庫都是爲它而構建的,而不是ArrayList,即使它在技術上與ArrayList相同,但它不是更好的選擇。
除了舊的遺留代碼,我不認爲如果它完全從圖書館中消失,.NET就會受到影響。
列表是一個更好的選項,其中型鑄造成爲複雜的應用程序一個更大的問題
優點是'你不必鍵入< and >',缺點是'它似乎很快過時或更高版本# –
除了與.NET 1.1代碼交互之外,沒有任何理由。 –
@KingKing真的嗎?這是你找到的優勢? ...? –