背景:我試圖創建自己的「矢量」類,以協助對號碼組進行數學計算。我正在重載算術運算符(+ - * /)以實現我想要的功能。起初,我在我的班級中使用了一個私有數組,然後實現了接口。之後,我想到繼承List<T>
課程,但在閱讀了幾篇文章後,我明白我應該使用Collection<T>
來代替。請注意,當使用數據填充我的「Vector」對象時,的性能非常重要。System.Collections.ObjectModel.Collection <T>的「Add」方法是如何工作的?
問題:Collection<T>.Add()
方法是如何工作的?所述List<T>.Add()
documentation是很清楚的:
如果計數已等於容量,列表的容量增加自動重新分配內部陣列,而現有的元素被複制到新的陣列被添加的新元素之前。
但是,Collection<T>.Add()
documentation根本沒有說明它是如何工作的。當我使用List<T>
作爲我的基類時,我可以訪問Capacity
屬性,並且我可以在使用Add()
方法之前指定大小。但是,Collection<T>
沒有Capacity
屬性---這就是爲什麼我問這個問題。我再次重申:表現非常重要。
由於性能是一個問題,也許我應該回去使用專用陣列和實施IEnumerable<T>
接口。你怎麼看?
我可以建議不要自己滾動嗎?請參閱[在C#中使用3D數學的好庫]?(http://stackoverflow.com/questions/607254/good-library-for-3d-math-in-c) – bluevector
這可能會有幫助,雖然它沒有涉及直接收集:http://c-sharp-snippets.blogspot.co.uk/2010/03/runtime-complexity-of-net-generic.html –
@dtryon感謝您的鏈接......正如您指出的那樣並不能幫助我解決我的問題,但這是一個很好的參考,我一定會在將來使用。 – HydroPowerDeveloper