.Net学习 第2季05 C#面向对象 ArrayList

.Net 视频学习第2季 C#面向对象

面向对象 ArrayList

数组:类型单一(除非是父类数组,子类对象作元素---注意元素还是被认为是父类对象!),长度固定

int[] a = new int[10];

集合:命名空间System.Collections

ArrayList list = new ArrayList();

往集合里边添加数据

list.Add(1);

对同一个集合,可以往里边添加任意类型的数据。(注意Add()方法的输入参数是object类,是所有类型的基类)

ArrayList没有Length属性,不过有Count属性,本质一样。

int a =list.Count;

从上边可以看出集合至少比数组在两方面有优势,第一是不用考虑元素类型是否一致,第二是不用考虑长度问题。

再次强调一点,Add()放进集合的元素都会被视作object类的对象,而不是元素本身的类的对象!!

(放数据很爽,用数据很苦逼————要数据类型转换)

往集合添加数据(集合类型)的另一个方法:AddRange(),添加的时候就已经知道是集合类型,注意不是整个数组当成一个元素!

list.Add(1);int[] a = new int[]{1,2,3}
list.AddRange(a);

清空:list.Clear();

清除某一项:list.Remove(X); 删除集合list中第一个X

通过下标清除某一项:list.RemoveAt(int a);

删除一个下标范围内的项:list.RemoveRange(int a, int b); a是删除的第一个项的下标,b是清除范围的长度

集合元素顺序反转:list.Reverse(); 注意,如果集合类型通过AddRange()作为元素放在集合中,集合reverse连这个元素内部的数据都会反转

插入元素:list.Insert(int a, X); 在下标a处插入数据X

插入集合:list.InsertRange(int a, L);

判断是否有某元素:list.Contains(X);  和Add()配合使用往集合添加元素

count属性:当前元素个数

capcity属性:可容纳的元素个数

当count大于capcity时,向内存申请多一倍的空间(开辟新空间两倍于原空间,复制数据,销毁原空间)

所以要注意,往空集合添加元素时不要用list.Count作为循环判断,因为刚刚new出来的ArrayList,Count和Capcity都是0。

时间: 2024-08-10 02:38:59

.Net学习 第2季05 C#面向对象 ArrayList的相关文章

.Net学习 第2季05 C#面向对象 Path类 File类

.Net 视频学习第2季 C#面向对象 面向对象 Path类 File类 Path类,命名空间IO,静态类 Path.GetFileName(str),返回文件路径中的文件名,返回值为string Path.GetFileNameWithoutExtension(str),返回文件路径中的文件名,不带扩展名,返回值为string Path.GetExtension(str),返回文件路径中的文件的扩展名,返回值为string Path.GetDirectoryName(str),返回文件所在的全

.Net学习 第2季02 C#面向对象继承1

.Net 视频学习第2季 C#面向对象 面向对象继承1 查找类的命名空间快捷键:alt+shift+F10 项目A中有类X,要在项目B中使用X的话,首先在项目B的引用当中添加项目A,然后在项目B的代码中添加using A;(假设项目A类X的命名空间就是A)或者在使用X时采用A.X的格式. 记录运行时间 Stopwatch sw = new Stopwatch(); sw.Start(); // 代码 sw.Stop(); Console.WriteLine(sw.Elapsed); Start(

.Net学习 第2季04 C#面向对象 里氏转换 随机数 protected

.Net 视频学习第2季 C#面向对象 面向对象 里氏转换 随机数 protected 里氏转换:子类对象可以赋值给父类对象:如果父类中装的是子类对象,可以将此父类对象强制转换成子类对象. 子类对象可以调用父类成员,但父类对象永远只能调用自己的成员. is或者as均表示类型转换,is返回true/false,as返回转换后对象/null class Person { public string Name {get;set;} } class Student:Person { } class Te

.Net学习 第3季 C#面向对象 接口

.Net 视频学习第3季 C#面向对象 面向对象 接口 C++中一个类可以继承于多个类,但C#中不允许.因此如果想实现类似操作,需要接口,关键字interface public class Person { } public interface Iable { void test(); } public class Student:Person,Iable { void test() { Console.WriteLine("test"); } } 接口名通常以I开头able结尾. 接

.Net学习 第3季 C#面向对象 多态

.Net 视频学习第2季 C#面向对象 面向对象 多态 概念:让一个(父类)对象表现出多种(子类)类型的特性:三种方法:虚方法/抽象类/接口 方法一:虚方法 将父类方法标记为虚方法,使用关键字virtual在返回值类型前,这个方法可以被子类重写一遍(在子类方法返回值类型前使用关键字override) 没有使用虚方法下: public class Person { private string _name; public string Name { get{return _name;} set{_

.Net学习 第3季 C#面向对象 访问修饰符

.Net 视频学习第3季 C#面向对象 面向对象 访问修饰符 C#五种访问修饰符 1)可以修饰类的访问修饰符只有两个:public,internal(默认) internal:只可以在当前程序集(先理解为项目)中访问 public:公共的 项目A访问项目B中的public类,首先要在项目A的引用中添加项目B,然后再项目A的文件中添加using 项目B该类的命名空间. 在同一个程序集当中,public和internal的访问权限一样. 2)修饰类的成员的访问修饰符:public,private,p

.Net学习 第2季 C#面向对象

.Net 视频学习第2季 C#面向对象 面向对象初级 类是一个模板,不占内存,对象是根据模板生成的具象,占内存. 字段field:数据 方法method:函数 属性property:保护字段,对字段的赋值进行限定(将这部分封装在类中,外界不用理会如何实现)属性的本质就是两个方法 get() / set() 外部(甚至类内部的方法)通过属性对字段进行赋值/读取,get()/set()内部会进行限定,字段永远用private,属性才是public的. namespace Proj { class P

.Net学习 第0季 学前入门

.Net 视频学习第0季 学前入门 .Net Framework 是 .Net平台中不可缺少的一部分,它提供了一个稳定的运行环境来保证我们基于.Net平台开发的各种应用能够正常地运行. C#是一种编程语言,可以开发基于.Net平台的应用.(.Net平台支持多种编程语言,但C#是主流) 桌面应用程序(winform),internet应用程序(ASP.NET),手机开发,Unity3D游戏开发或虚拟现实. .Net两种交互模式:C/S(客户端/服务器)和B/S(浏览器/服务器).桌面应用程序一般是

黑 马 程 序 员_视频学习总结<C语言>----05 结构体

---------------------- ASP.Net+Unity开发..Net培训.期待与您交流! ---------------------- 一.什么是结构体 在实际应用中,我们通常需要由不同类型的数据来构成一个整体,比如学生这个整体可以由姓名.年龄.身高等数据构成,这些数据都具有不同的类型,姓名可以是字符串类型,年龄可以是整型,身高可以是浮点型.为此,C语言专门提供了一种构造类型来解决上述问题,这就是结构体,它允许内部的元素是不同类型的. 二.结构体的定义 结构体内部的元素,也就是