如何使用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