面向对象 集合篇

集合概念:

集合本质上是一个动态数组


2.命令引用:using system.collections
2.1 Arratlist 属性(count) 数量 、属性2(capactity) 有几个位子 //集合里包括属性和方法
2.2 arratlist list =new arraylist();
list.add(欲添加的值) object 类型的 为什么这里可以使object 类型的? 是因为object 是所有类型的父类,父类引用指向子类对象 所有类型都可以放在集合中去。

2.3 集合与数组不同之处在于数组的元素一旦定死则无法变动,而集合更加灵活的原理在于,一旦超出数组的位置之后,先创建一个比原数组的大于原数组的长度的四个元素的新元素、将旧数组的元素值赋予新数组的之后将原旧数组销毁,并且将新的元素填满。注,比如用add加入了大于四个元素的位置,它就会显示8个。

public class Class1
{

public object[] Array { get; set; } //封装一个class 1 的集合
public int Count { get; set; } 定义属性
public Class1()
{

Array = new object[4]; // 无参的构造函数创建一个旧的数组
}

public void add(object o)
{


if (Array.Length == Count) //传递一个有参的参数 并且如果元素已满
{ 创建一个新的数组+4 并且将新的引用指向旧的数组引用

object[] a = new object[Array.Length + 4];
Array = a;


}

Count++;


}

}
}


ArrayList: 属性和方法
Add(object o) 添加元素
AddRange() 添加范围

二 new 对象的时候 对象的引用指向集合中的元素位置 存的只是引用地址 如果打印的话,那么只会打出类名
注:
打印一个输出一个对象实际上是调用该对象的tostring 方法()
如果要打印对象的信息、那就必须要重写。因为object 父类中是虚方法。

2.移除元素
Remove (object o)根据值来删除
删除对象的时候,由于集合里面存放的是引用地址,而引用地址又是原来的地址,删除时虽然填入的是相同的值,但是实际上在删除查找的时候并没有找到这个地址,所以删除不了
如果要删除,则定义一个变量,利用这个变量来删除
循环删除的元素,删除了第0个值,之后循环+1 数组长度-1 原来的1值变成第0值,而循环的数为1,则删第1个数,而不是删除第0个数值。
RemoveAT (int index) 根据提供的下标删除指定的元素 //第几个元素

List<T> 泛型

T 是类型参数 使用时由使用者来指定


对比:
Arravlist 的优点:

什么都能放、非常的灵活

缺点:
1.类型不安全
2.操作台麻烦
3.效率太低

2.装箱与拆箱

将基本类型转成object 装箱操作
将object 类型还原成基本类型 拆箱操作

list<T>和Arraylist 操作方法没有任何区别

 4.枚举类型

enum Color
{ 
    Red,
    Green,
    Blue
}
原文地址:https://www.cnblogs.com/liyiyong/p/5099846.html