如何使用C#在.Net中設置特定對象類型列表的初始大小,並且能夠在指定索引處插入完全分配的對象?設置列表初始大小
設置列表初始大小
回答
這可以用一個數組來輕鬆完成:
string[] sa = new string[99];
sa[71] = "g";
這也恰好實現IList接口。
您不能將項目插入到數組中。您只能替換一個值。 – Servy 2013-04-08 13:50:20
@Servy正如已經多次指出的那樣,短語「在特定位置插入」顯然是不明確的,並且意味着「覆蓋」或「插入到插槽中」與其意味着「插入和推出」的鏈接列表。當你談論在特定位置插入時,你通常打算讓其他位置的物體保持放置而不是改變位置。 – RBarryYoung 2013-04-08 14:27:24
如果你不打算任何其他對象改變位置,那麼適當的術語將是「替換」或「覆蓋」。不是「插入」。如果這是預期的意思,那麼這不是該術語的適當使用。 – Servy 2013-04-08 14:33:02
您可以使用構造函數重載List<T>(int capacity)
:
var l = new List<string>(42);
容量爲42
我已經低估了。看到我的答案,你就會知道爲什麼。 – MarcinJuraszek 2013-04-05 21:05:46
好的,我把這個問題看作是「填寫清單時,我希望能夠插入項目」而不是「我希望能夠從頭開始插入項目」(例如:add item 0,item 1,insert項目介於0和1之間),它與'List
下聲稱插入失敗選民創建一個列表。
您是否閱讀過鏈接中的文檔?
ArgumentOutOfRangeException如果index小於0 - 或 - index大於Count。
所以容量和數量是不一樣的 - 不會讓答案錯誤。
如果index小於0,則MarcinJuraszek的答案將拋出ArgumentOutOfRangeException - 或者 - index大於Count。
我在生產應用程序中正好使用這種方式來按字母順序加載,然後在索引0處插入任何用戶添加,並且它有從不引發異常。
有List<T>
構造函數需要一個int
爲initiall列表容量的參數,但它實際上並沒有創建一個數的列表中的元素,所以這將拋出ArgumentOutOfRangeException
:
var items = new List<int>(10);
items[4] = 3;
您可以創建你自己創造的那種List
方法,初始大小:
private static List<T> CreateList<T>(int capacity)
{
return Enumerable.Repeat(default(T), capacity).ToList();
}
這將使其工作:
var items = CreateList<int>(10);
items[4] = 3;
但是,當您知道所需容量時,爲什麼不使用Array
而不是List
?
無LINQ版
private static List<T> CreateList<T>(int capacity)
{
List<T> coll = new List<T>(capacity);
for(int i = 0; i < capacity; i++)
coll.Add(default(T));
return coll;
}
@MarcinJuraszek謝謝你的回答,但是到目前爲止,這並不適用於我。這是我的。 '子場= CreateList
據我所知的初始大小設置爲列表違背相比,數組列表背後的整個想法。
但這裏是你怎麼做:
List<ItemType> list = new List<ItemType>(size);
尺寸爲int數據類型。
的一個實例這將設置初始容量,而不是初始大小 – winwaed 2014-09-12 17:36:56
- 1. 如何設置TreeViewer的初始大小?
- 2. 未初始化列表的大小C#
- 3. 基於內容大小設置多行textInput的初始大小
- 4. 從另一個列表大小或int設置列表大小?
- 5. 初始窗口大小/調整大小
- 6. 如何設置PhosphorJS Widget的(初始)大小
- 7. 如何在Python中設置字典的初始大小?
- 8. 如何在QSplitter中設置QTreeView的初始大小?
- 9. 如何在Java中設置初始窗口大小OpenGL
- 10. 如何在iOS中設置初始大小UIMapkit
- 11. 如何爲reference_wrapper的STL容器設置初始大小?
- 12. Selenium WebDriver使用PhantomJSOptions設置PhantomJS初始視口大小
- 13. ByteBuf初始容量大小
- 14. 初始Tomcat 5.5堆大小
- 15. Sharepoint Collaboration Portal初始大小
- 16. UIscrollview初始圖像大小
- 17. jScrollPane初始設置?
- 18. 如何在使用分頁時設置表格的初始大小?
- 19. 如何初始化PyTables表列的大小?
- 20. 如何static_assert初始化程序列表是一定的大小
- 21. 哈希表大小設置
- 22. 初始化列表後的大括號
- 23. Django表單:設置初始值
- 24. 初始化在初始化列表
- 25. -Xms:初始堆大小或最小堆大小?
- 26. std ::數組初始化列表在初始化列表中初始化
- 27. 設置初始高度
- 28. 設置初始值UILABEL
- 29. jquery設置初始值
- 30. 設置初始焦點
是不是指'列表'?你肯定需要插入,或只覆蓋? –
2013-04-05 20:57:36
使用'List'你不能只使用'Insert(index,item)'? –
mattytommo
2013-04-05 20:59:09
@mattytommo當然可以。它會拋出一個索引超出範圍的異常,你可以編譯它的錯誤。 – Servy 2013-04-05 21:04:28