什么时候 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[]?

使用 System.Data.SQLite (C#) 的 SQLite 查询比在 SQLiteStudio 中要慢得多

C#中的ArrayList

C# 集合与泛型

C#中数组ArrayList和List三者的区别

有没有比在开头使用 1=1 更好的方法来动态构建 SQL WHERE 子句?