代码图理解复杂代码

类图

1.抽象动物类Animal

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Demo2
{
public abstract class Animal
{
protected string name; public string Name
{
get
{
return name;
} set
{
name = value;
}
} public Animal()
{
name = "The animal with no name";
} public Animal(string newName)
{
name = newName;
} public void Feed()
{
Console.WriteLine("{0} has been fed.",name);
}
}
}

2.牛类Cow

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Demo2
{
public class Cow:Animal
{
public void Milk()
{
Console.WriteLine("{0} has been milked.",name);
} public Cow(string newName):base(newName) // 继承了父类
{ }
}
}

3.鸡类Chicken

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Demo2
{
public class Chicken:Animal
{
public void LayEgg()
{
Console.WriteLine("{0} has laid an egg.",name);
} public Chicken(string newName) :base(newName)
{ }
}
}

4.主类Program,用到了数组和集合Array,ArrayList

using System;
using System.Collections; // 集合
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Demo2
{
class Program
{
static void Main(string[] args)
{ // 数组的形式
Console.WriteLine("Create an array type collection of Animal objects and use it:");
Animal[] animalArray = new Animal[2];
Cow myCow1 = new Cow("Deirdre");
Chicken myChicken1 = new Chicken("Ken");
animalArray[0] = myCow1;
animalArray[1] = myChicken1; foreach (Animal myAnimal in animalArray)
{
Console.WriteLine("New {0} object added to Array collection,Name = {1}", myAnimal.ToString(),myAnimal.Name);
} Console.WriteLine("Array collection contains {0} objects.",animalArray.Length); animalArray[0].Feed();
((Chicken)animalArray[1]).LayEgg(); // 集合的形式
Console.WriteLine("Create an ArrayList type collection of Animal objects and use it:");
ArrayList animalArrayList = new ArrayList();
Cow myCow2 = new Cow("Hayley");
animalArrayList.Add(myCow2);
animalArrayList.Add(new Chicken("Roy"));
foreach (Animal myAnimal in animalArrayList)
{
Console.WriteLine("New {0} object added to ArrayList collection,Name = {1}", myAnimal.ToString(), myAnimal.Name);
}
Console.WriteLine("Array collection contains {0} objects.", animalArrayList.Count); // 注意这里是Count
((Animal)animalArrayList[0]).Feed();
((Chicken)animalArrayList[1]).LayEgg(); Console.ReadKey(); }
}
}

两种效果差不多,细节略有区别!

再看下面,改造

定义Animals类,不需要通过ArrayList了。Animals就是ArrayList。

Animals.cs

using System;
using System.Collections; // 集合
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Demo2
{
public class Animals : CollectionBase
{
public void Add(Animal newAnimal)
{
List.Add(newAnimal);
} public void Remove(Animal newAnimal)
{
List.Remove(newAnimal);
} public Animal this[int animalIndex]
{
get
{
return (Animal)List[animalIndex];
}
set
{
List[animalIndex] = value;
}
}
}
}

使用Animals

using System;
using System.Collections; // 集合
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace Demo2
{
class Program
{
static void Main(string[] args)
{ Animals animalCollection = new Animals();
animalCollection.Add(new Cow("Jack"));
animalCollection.Add(new Chicken("Vera"));
foreach(Animal myAnimal in animalCollection)
{
myAnimal.Feed();
} Console.ReadKey(); }
}
}

Array可以包涵基本类型和对象类型,ArrayList只能包涵对象类型。

Array大小是固定的,ArrayList的大小是动态变化的。

ArrayList提供了更多的方法和特性,比如:addAll(),removeAll(),iterator()等等。

对于基本数据类型,集合使用自动装箱来减少编码的工作量。但是当处理固定大小的基本数据类型的时候这种方式相对比较慢。

方法论:

实践加理论!多查查相关的资料,总结一下!

Array与ArrayList的更多相关文章

  1. C#中数组Array、ArrayList、泛型List<T>的比较

    在C#中数组Array,ArrayList,泛型List都能够存储一组对象,但是在开发中根本不知道用哪个性能最高,下面我们慢慢分析分析. 一.数组Array 数组是一个存储相同类型元素的固定大小的顺序 ...

  2. Array和ArrayList互相转换

    class Order{ public string orderId; public string orderName; public decimal orderPrice; } public cla ...

  3. Array和ArrayList的异同点【转】

    相信数组是大家在编程最常使用的,不论任何语言都存在数组这样的数据结构,由于C#语言是完全面向对象的,所以在C#中的数组也是对象,实际上就是Array类的实例,Array类的使用可以说是使用最频繁的,只 ...

  4. Array和ArrayList的区别与联系

    博主今天去了一个java的实习面试,发现有好多java最基础的数据结构对于博主来说反而感到陌生,在面试官问一些常见的例如HashMap这样的数据结构,博主能回答的头头是道,但是在问到Array和Arr ...

  5. Array和ArrayList的异同点

    Array和ArrayList的异同点 1.不同点: (1)Array只能存储同构的对象, ArrayList可以存储异构的对象 (2)在CLR托管对中的存放方式中,Array是始终是连续存放的, A ...

  6. C# array与arraylist区别及获取sql字段名

    array与arraylist的区别: 1.  Array 的容量是固定的,而 ArrayList 的容量是根据需要自动扩展的.如果更改了 ArrayList.Capacity 属性的值,则自动进行内 ...

  7. Array和ArrayList有什么区别?

    Array和ArrayList的区别: 1.Array可以包含基本数据类型和对象类型,而ArrayList只能包含对象类型 2.Array有固定的大小,而ArrayList是动态变化的. 3.Arra ...

  8. C#数组之 []、List、Array、ArrayList应用

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  9. C#中[] 、List、Array、ArrayList等数据结构的差异简述

    [] 是针对特定类型.固定长度的. List 是针对特定类型.任意长度的. Array 是针对任意类型.固定长度的. ArrayList 是针对任意类型.任意长度的. Array 和 ArrayLis ...

  10. Java面试题之Array和ArrayList的区别

    Array和ArrayList的区别: 1.Array类型的变量在声明的同时必须进行实例化(至少得初花数组的大小),而ArrayList可以只是先声明: 2.Array始终是连续存放的:而ArrayL ...

随机推荐

  1. POJ 3273 二分答案

    思路:二分答案经典题吧....注意边界就OK了 //By SiriusRen #include <cstdio> #include <algorithm> using name ...

  2. 实时监控Cat之旅~配置Cat集群需要注意的问题

    在配置cat集群时,有一些设置是我们应该注意的,从它的部署文档中我们可以看到相关信息,但说的还不够明确和重要,大叔今天总结一下Cat集群配置的注意事项 1 服务端datasources.xml用来设置 ...

  3. Struts2的struts.xml的标准配置文档

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-/ ...

  4. Python json数据中文输出问题。

    这个问题困扰了我好久好久,最后看了一眼官方文档,解决问题了. 问题描述:从web上获取的json数据,然后对应的保存到了python的类型中.再次输出这个数据时,中文总会变成\u1234这种形式. P ...

  5. 关于iOS声音识别的框架

    你好,我现在的项目中需要用到"声纹识别"这方面的需求,以前没做过,请教了.有没有这方面的框架和工具? 关于iOS声音识别的框架 >> ios这个答案描述的挺清楚的:ht ...

  6. 2、go Defer

    package main import ( "fmt" "os") func main() { f:=createFile("D:\\webfront ...

  7. tensorflow 1 - 起步

    使用图 (graph) 来表示计算任务. 在被称之为 会话 (Session) 的上下文 (context) 中执行图. 使用 tensor 表示数据. 通过 变量 (Variable) 维护状态. ...

  8. caffe(5) 其他常用层及参数

    本文讲解一些其它的常用层,包括:softmax_loss层,Inner Product层,accuracy层,reshape层和dropout层及其它们的参数配置. 1.softmax-loss so ...

  9. python常用函数库收集。

    学习过Python都知道python中有很多库.python本身就是万能胶水,众多强大的库/模块正是它的优势. 收集一些Python常用的函数库,方便大家选择要学习的库,也方便自己学习收集,熟悉运用好 ...

  10. center os 7最小化安装后按table无法补全命令的问题

    闲来无趣,这两天huskiesir又重新安装了下center os 7操作系统,结果呢,发现一个问题:按table键无法补全命令啊. 咦,奇怪了,这次怎么回事,完全没遇到过啊.哦,回想了一下,和以往的 ...