【问题标题】:When is ArrayList more efficient than using an array in C#? [duplicate]什么时候 ArrayList 比在 C# 中使用数组更有效? [复制]
【发布时间】: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
  • 您发布的代码不正确。

标签: c# arrays class


【解决方案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 },
};

【讨论】:

    猜你喜欢
    • 2010-11-20
    • 2020-12-26
    • 2013-04-21
    • 2010-10-18
    • 2011-05-29
    • 1970-01-01
    • 2010-12-08
    • 2015-07-31
    • 1970-01-01
    相关资源
    最近更新 更多