一、面向对象概述
1.1、面向对象的定义:对处理的事务进行分析和总结,抽象出事物的特性和行为,封装成相应的类,最后实例化成对象并进行操作。这种程序设计的思想成为面向对象。
1.2、面向对象的优势
易维护、易拓展、代码重用、灵活性好
二、类和对象
2.2、类的概念:类是对事物的一种抽象定义,类是具有共同特征和行为的一类事物的统称。
2.2、对象的概念:对象是类的实例,拥有具体特征和行为之后的类就成为了对象。对象是独一无二的具体个体,用来描述现实世界的某个事物。
类和对象的关系:
(1)类是对象的抽象,对象是类的实例化
(2)先有类,才有对象
2.3、定义类的语法:C#是面向对象的语言,其基本的组成单位就是类。
[访问修饰符] class 类名
{
类的内部成员;
}
语法说明:
(1)访问修饰符有:public、protected、internal、protected internal、private;
(2)类的内部成员有:字段、属性、方法、常量、事件和索引器等,类的特征通常用字段描述,类的行为使用方法描述。
(3)类名命名规则:首字母大写,不能使用关键字,使用有意义的英文单词进行命名;
2.4定义字段的语法:
[访问修饰符] class 类名
{
//定义字段语法
访问修饰符 数据类型 字段名;
}
2.5定义方法的语法
[访问修饰符] class 类名
{
//定义方法语法
访问修饰符 返回值类型 方法名(形参列表)
{
方法体;
}
}
方法名命名规则:首字母大写,不能使用关键字,使用有意义的英文单词进行命名;多个单词组合而成时,每个单词首字母大写。
2.6补充知识:float、double、decimal的区别
decimal的运用场景:适合财务和货币运算。
三、对象的实例化及访问类的成员
3.1、实例化对象语法:
类名 对象名=new 类名();
3.2、访问类字段语法:
对象名.字段名=值 --给类的字段赋值
对象名.字段名; --访问类的字段
3.3、访问类的方法语法;
对象名.方法名; --调用类的方法
四、类和对象的应用
4.1、综合项目实现思路:
(1)类:封装属性及方法;
(2)在Program类中封装增删改查方法;
(3)Program类Main方法中使用while或do-while循环打印主菜单;(主菜单可以单独封装成一个方法)
(4)根据用户不同选择,使用switch或else-if分支调用对应的类方法实现功能。
集合类
一、集合概述
1.1、数组的缺陷:
(1)数组长度固定,无法动态添加元素;
(2)数组元素类型必须相同;
1.2、集合的主要特征:集合类,简称“集合”,是常用数据结构。被定义在System.Collections命名空间中,有以下特征:
(1)动态地改变大小;
(2)可存储任意类型的对象(object);
(3)提供一系列操作集合中对象的方法
1.3、常用集合类
ArrayList(数组列表):可变长度的数组
Hashtable(字典):键值对存取
Queue(队列):先进先出
Stack(栈):先进后出
SortedList(排序列表)
1.4:常用集合接口:
IEnumerable、ICollection、IList、IDictionary
二、列表集合ArrayList
2.1、ArrayList概念:属于集合类中的一种,类似于数组,因其大小可根据需要动态地改变,故也可称为动态数组。
使用动态数组需要注意以下事项:
(1)需要导入命名空间System.Collections;
(2)存储的元素都当作对象(objec),访问对象时,需要把他们的数据类型转换回存储前的类型。
2.3、ArrayList使用
//文件顶部导入命名空间System.Collections
using System.Collections
//创建ArrayList
ArrayList 动态数组名=new ArrayList([数组长度]);
//添加ArrayList集合元素
动态数组名.Add(集合元素);
//访问ArrayList集合元素
动态数组名[下标] as 数组类型
2.3、ArrayList的常用属性:
2.4、ArrayList的常用方法:
三、字典集合Hashtable
3.1、ArrayList的缺陷:查询条件是字符串类型(不是索引)时,必须遍历集合才能得到结果,操作较复杂。
3.2、Hashtable的概念:是System.Collections命名空间提供的一个处理key/value(键/值)对集合容器。key通常用于快速查找,value用于存储对应于key的值。
使用字典集合需要注意以下事项:
(1)需要导入命名空间system.Collections;
(2)key区分大小写;
(3)存储的元素都当作对象(object),访问对象时,需要把他们的数据类型转换回存储前的类型。
3.3、Hashtable的使用
//文件顶部导入命名空间System.Collections
using System.Collections
//创建Hashtable
Hashtable 字典集合名=new Hashtable();
//添加Hashtable集合元素
字典集合名[key] as 数据类型
3.4、Hashtable的常用属性
3.5、Hashtable的常用方法:
*补充知识:
装箱和拆箱
(1)装箱:指将一个值类型隐式地转换成一个引用类型;
(2)拆箱:指将一个引用类型显示转换成一个值类型;
(3)C#的引用类型包括:数组、委托、接口、Object、字符串、用户定义的类;
(4)C#的值类型包括:数值类型、结构体、bool、枚举、可空类型、用户定义的结构体;
泛型
一、泛型概述
1.1、泛型的概念:泛型是C#2.0推出的新语法,在命名空间System.Collections.Generic,包含了几个新的机遇泛型集合类,有以下优势
(1)极大提高代码的重用性:不需要对参数类型不同代码相同(仅类型参数不同)的代码重写;
(2)高效性:避免装箱和拆箱操作降低性能;
(3)类型安全性:定义允许使用的数据类型,在编译时检测类型错误,及早发现错误。
1.2、泛型分离:
1.3、泛型类的使用:
//文件顶部导入命名空间System.Collections.Generic
using System.Collections.Generic
//定义泛型类
访问修饰符 class 类型<T>
{
//类成员
}
//实例化泛型类对象
类名<数据类型> 对象名=new 类名<数据类型>([实例列表])
//访问泛型类成员
对象名.属性名;
对象名.方法名([实参列表]);
*语法说明:
(1)泛型类在定义时,只需使用<T>泛指所有数据类型;
(2)在实例化对象时,需要确定指定的数据类型。
1.4、泛型方法的使用:
//文件顶部导入命名空间System.Collections.Generic
using System.Collections.Generic
//定义泛型方法
访问修饰符 返回值数据类型 方法名<T>([形参列表])
{
//方法体
}
//调用方法
方法名<数据类型>([实参列表])
*语法说明:
(1)泛型方法在定义时,只需使用<T>泛指所有参数类型;
(2)在调用时,需要确定指定的数据类型的参数。
二、泛型集合 List<T>
2.1、List<T>概念:
与ArrayList的使用方式完全一样,区别在于:
(1)List<T>定义时必须指定集合中存储数据的类型,增强了类型的安全性
(2)List<T>不用装箱和拆箱
2.2、List<T>使用:
//文件顶部导入命名空间System.Collections.Generic
using System.Collections.Generic
//创建List<T>
List<数据类型> 集合名=new List<数据类型>();
//添加List<T>集合元素
集合名.Add(集合元素);
//访问List<T>集合元素
foreach(数据类型 item in 集合名)
{
item;
}
2.3、List<T>的常用属性:
2.4、List<T>的常用方法:
三、泛型字典集合Dictionary<K,V>
3.1、Dictionary<K,V>概念:
与Hashtable集合的使用方式大体一样,区别在于:
(1)Dictionary<K,V>定义时必须指定key和value的类型,增强了类型的安全性;
(2)Dictionary<K,V>不用装箱和拆箱。
3.2、Dictionary<K,V>的使用:
//文件顶部导入命名空间System.Collections.Generic
using System.Collection.Generic
//创建Dictionary<K,V>
Dictionary<key数据类型,value数据类型> 字典集合名=new Dictionary<key数据类型,value数据类型>();
//添加Dictionary<K,V>集合元素
字典集合名.Add(key,value);
//访问Dictionary<K,V>集合元素
foreach(key 数据类型 key in 字典集合名.keys)
{
字典集合名[key];
}
3.3、Dictionary<K,V>的常用属性:
3.4、Dictionary<K,V>的常用方法: