什么时候 ArrayList 比在 C# 中使用数组更有效? [复制]
Posted
技术标签:
【中文标题】什么时候 ArrayList 比在 C# 中使用数组更有效? [复制]【英文标题】:When is ArrayList more efficient than using an array in C#? [duplicate] 【发布时间】:2019-05-10 06:12:51 【问题描述】:虽然我想使用数组或 ArrayList,但我有一个包含属性到“列表”中的类。我相信他们对使用任何一个都有一些限制。我在下面提供了两种方法的示例;哪个是更好的方法?哪种方法在内存使用方面更快?
public class Cat
public int CatId get; set;
public string CatName get; set;
public static void ListCats()
ArrayList cats = new ArrayList();
Cat cat = new Cat();
cat.CatId = 1;
cat.CatName = "Jim";
cats.Add(cat);
cat.CatId = 2;
cat.CatName = "Sally";
cats.Add(cat);
我了解 ArrayList 附带的方法可以更轻松地使用列表执行不同的操作。此外,ArrayList 不是强类型集合。但是,如果需要定期从用户那里提取列表中的值,那么明确使用列表是否更有意义?在哪些情况下应该使用数组?
public class Cats
public string CatName get; set;
public int CatId get; set;
public static void ListCats()
Cats[] cats = new Cats[];
Cats[] =
CatName = "Charlie", CatId = 1;
CatName = "Missy", CatId = 2;
【问题讨论】:
不清楚你在问什么。数组和列表可以“非常相似”地使用,因此(从使用角度来看)只有很小的区别,因为这些集合可以随时相互转换。 在第一个 sn-p 中,更改ListCats()
: List<Cats> cats = new List<Cats>() new Cats() CatName = "Charlie", CatId = 1 , new Cats() CatName = "Missy", CatId = 2 ;
你的 Cats
类应该是 Cat
,所以你的列表将是一个 List<Cat>
到你 .Add()
new Cat()
或 AddRange(Enumerable<Cat>)
。您的 ListCats()
可以返回 List<Cats>
而不是 void
。
您发布的代码不正确。
Which approach is faster?
【参考方案1】:
遍历数组总是更快,但是列表更灵活,在日常使用中更有用。当你真的需要额外的一点点优化(例如游戏开发)时使用数组,否则我总是会使用列表。
如果您需要更多信息,请参考以下链接:
When should I use a List vs a LinkedList
另外,如果您想初始化对象集合,请使用以下语法
List<Cats> cats = new List<Cats>
new Cats CatName = "Charlie", CatId = 1 ,
new Cats CatName = "Missy", CatId = 2 ,
;
【讨论】:
以上是关于什么时候 ArrayList 比在 C# 中使用数组更有效? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
何时在 c# 中使用 ArrayList 而不是 array[]?