zoukankan      html  css  js  c++  java
  • C#中Array与ArrayList的区别

    2008年08月19日 星期二 13:23

           C#中经常用到的集合类Array与ArrayList是许多刚接触C#语言的人比较困惑的。这两个对象是比较有用的,而且是在很多地方适用的。这里我把自己对Array与ArrayList对象的区别总结一下,与大家分享。

    主要区别:

    一、Array的用法与数组几乎一样,可以看做是数组。在定义的时候需要指定长度;ArrayList的用法与普通集合一样,定义的时候不需要指定长度;当然,Array是抽象类,不能直接实例化,但是继承自它的子类可以实例化。

    如:ArrayClass[] animalArray = new ArrayArrayClass[2]; //ArrayClass为继承自Array的类;

           ArrayList animalArrayList = new ArrayList();

    二、Array对象在获得元素个数时通过数组的获得方式(Length属性):animalArray.Length;ArrayList对象在获得元素个数时通过集合的获得方式(Count属性):animalArrayList.Count;

    三、为Array对象赋值时,通过下标的访问方式:animalArray[1] = new Chicken("鸡鸡一");Array对象通过集合添加的方式赋值:animalArrayList.Add(new Chicken("鸡鸡二"));

    以下是针对Array与ArrayList的一个例子,其中包括一个基类Animal和两个继承类Chicken、Cow;当然主要的代码和功能在Program中。这几个类的代码分别为:

    Animal类:

    using System; using System.Collections.Generic; using System.Text;

    namespace AnimalConsole {     public abstract class Animal     {         protected string name;

            public string Name         {             get             {                 return name;             }             set             {                 name = value;             }         }

            public Animal()         {             name = "没名字的动物!";         }

            public Animal(string newName)         {             name = newName;         }

            public void Feed()         {             Console.WriteLine("“{0}” 已经被喂养!",name);         }     } }

    Chicken类:

    using System; using System.Collections.Generic; using System.Text;

    namespace AnimalConsole {     public class Chicken : Animal     {         public void LayEgg()         {             Console.WriteLine("“{0}” 已经下了一个蛋!",name);         }

            public Chicken(string newName) : base(newName)         {         }     } }

    Cow类:

    using System; using System.Collections.Generic; using System.Text;

    namespace AnimalConsole {     public class Cow : Animal     {         public void Milk()         {             Console.WriteLine("“{0}” 已经被喂奶!",name);         }

            public Cow(string newName) : base(newName)         {         }     } }

    Program类:

    using System; using System.Collections; using System.Collections.Generic; using System.Text;

    namespace AnimalConsole {     class Program     {         static void Main(string[] args)         {             Console.WriteLine("创建一个 Array 类列表集合对象并使用它:");             Animal[] animalArray = new Animal[2];             Cow myCow1 = new Cow("牛牛一");             animalArray[0] = myCow1;             animalArray[1] = new Chicken("鸡鸡一");

                foreach (Animal myAnimal in animalArray)             {                 Console.WriteLine("动物 “{0}” 已经添加到 Array 类列表集合中,名叫 “{1}”",myAnimal.ToString(),myAnimal.Name);             }             Console.WriteLine("Array 类列表集合包含 {0} 个对象。",animalArray.Length);             animalArray[0].Feed();             ((Chicken)animalArray[1]).LayEgg();             Console.WriteLine();

                Console.WriteLine("创建一个 ArrayList 类列表集合对象并使用它:");             ArrayList animalArrayList = new ArrayList();             Cow myCow2 = new Cow("牛牛二");             animalArrayList.Add(myCow2);             animalArrayList.Add(new Chicken("鸡鸡二"));

                foreach (Animal myAnimal in animalArrayList)             {                 Console.WriteLine("动物 “{0}” 已经添加到ArrayList类列表集合中,名叫 “{1}”",myAnimal.ToString(),myAnimal.Name);             }             Console.WriteLine("ArrayList 类列表集合包含 {0} 个对象。",animalArrayList.Count);             ((Animal)animalArrayList[0]).Feed();             ((Chicken)animalArrayList[1]).LayEgg();             Console.WriteLine();

                Console.WriteLine("ArrayList 的附加操作:");             animalArrayList.RemoveAt(0);             ((Animal)animalArrayList[0]).Feed();             animalArrayList.AddRange(animalArray);             ((Chicken)animalArrayList[2]).LayEgg();             Console.WriteLine("名叫 “{0}” 的动物的索引为 {1}。",myCow1.Name,animalArrayList.IndexOf(myCow1));             myCow1.Name = "牛牛三";             Console.WriteLine("这个动物现在叫: “{0}”",((Animal)animalArrayList[1]).Name);             Console.ReadKey();         }     } } 运行结果如下图:

  • 相关阅读:
    ceph故障恢复
    上线遇到nginx问题
    java.lang.IllegalArgumentException: Comparison method violates its general contract 异常
    drone构建build时mvn日志太多,取消日志打印,输出失败异常
    mongo异常com.mongodb.MongoCursorNotFoundException
    循环list执行删除报ConcurrentModificationException异常
    磁盘目录/dev/vda2满了进行清理
    elasticSearch基本操作
    LOJ#6029「雅礼集训 2017 Day1」市场
    虚树
  • 原文地址:https://www.cnblogs.com/suizhikuo/p/2274774.html
Copyright © 2011-2022 走看看