C# 程序设计
2018-07-03 10:20:23 0 举报
AI智能生成
C# 程序设计知识点复习资料(脑图)
作者其他创作
大纲/内容
运算符和表达式
运算符
算术运算符:+,-,*,/,%,++,--
赋值运算符:=,+=,-=,*=,/=,%=,<<=,>>=,&=,|=,^=
关系运算符:==,!=,>,<,<=,>=
逻辑运算符:!,&&,||,&,|,^
位运算符:&,~,|,^,<<,>>
条件运算符:? :
运算符优先级
初级、一元、乘除模
加减、位移、关系、等
逻辑、条件和赋值
表达式
面向对象
类和对象
类是抽象概念,是对象的模板
对象是类的具体实现,对象会被分配内存
现实世界中对象属性的概念:属性就是对于一个对象的抽象刻画。一个具体事物,总是有许许多多的性质与关系,我们把一个事物的性质与关系,都叫做事物的属性。
类的成员
字段:封装数据
属性:访问字段
方法:加工数据
方法重载条件:方法名相同,其余方法签名不完全相同
方法签名(方法标识):指方法名称、参数个数、参数类型、参数顺序
事件
对象之间消息互通
三步曲
定义事件委托:public delegate void <委托类型名>(object sender, Eventargs s);
定义事件触发类(产生事件):public event <委托类型名> <事件名>;
定义事件接受类(处理事件):需要提前订阅事件
构造函数
函数名与类名相同
使用new隐式调用,主要完成初始化
不能显示调用,只能隐式匹配
一定有构造函数,不能有返回值
索引器
访问修饰符
public
private
protected
internal
protected internal
方法的高级用法
继承
子类从父类获得字段、属性、事件和方法,提升代码可重用性
抽象类和抽象方法
抽象类
使用abstract修饰
可以包含实现代码
不能被实例化,只能被继承
抽象方法
使用abstract修饰
隐式为虚方法
只有方法声明,没有方法体
只能存在于抽象类
在子类中必须全部实现(重写)
密封类:sealed
构造函数调用问题
子类对象实例化时先执行父类无参构造函数,再执行子类构造函数
调用父类有参构造函数使用base关键字
重载
方法重载:基于类内部的操作,同一个方法完成多个类似的事情
运算符重载
关键字:operator
定义形式
public static <返回值类型> operator <操作符> (<类型> <参数>)
public static <返回值类型> operator <操作符> (<类型> <参数1>, <参数2>)
多态
不同的子类的同名方法实现相似的不同的功能
虚方法
使用virtual关键字声明
本身有方法体,但在子类中也可以被重写的方法
子类中用override重写
静态成员函数、构造函数不能是虚函数
接口
概念:只含有少量的方法、属性的声明,不存在实现代码
作用:定义类的原形而无需实现
一个类只能继承一个父类却可以实现多个接口,实现接口的类必须实现接口的所有成员
成员
接口成员默认为public,不能用private修饰符
属性、方法、事件、索引器
不能实例化
静态类
WinForm程序设计
常用控件
模式窗体
messageBox控件
常量变量
常量定义语法
const <type> <name> = <value>;//编译时常量
readonly <type> <name> = value;//运行时常量
命名规则
由字母、数字、下划线组成
不以数字开头
不与关键字函数名同
大小写敏感
常量分类
直接常量(幻数)
符号常量
值类型和引用类型的区别
枚举常量
定义语法:enum <name> {elem1[ = value1], elem2[ = value2], ... }
默认为值类型为int,顺序递增1
只有byte、short、int、long可赋值给枚举类型元素
标记枚举:添加[Flags]标记,枚举元素按2的指数幂顺序递增
结构体常量
程序控制
选择
if-else if-else
switch-case
循环
for
while满足条件才执行循环体
do-while无论条件是否成立都执行循环体
跳转
break用于跳出循环或结束switch分支
continue结束此轮循环进入下一轮
goto降低代码质量,一般不用,有时用于深层嵌套的跳出
return退出函数或返回值
throw异常处理
数组
概念:一组包含多个同种类型元素的数据结构
定义
类型 [] 数组名 = new 类型
使用
遍历
for
foreach
数据类型
类型名称及作用
类型分类
值类型
整形
int
uint
short
ushort
long
ulong
sbyte
byte
char
enum
bool
小数
float
double
decimal
结构
引用类型
类
数组
字符串
接口
委托
object类
万类之根,所有引用类型和值类型都直接或者间接继承自它
相等问题
值类型的“==”运算做内容比较
引用类型的“==”运算做引用比较
struct不能进行“==”和“!=”运算
类型转换
隐式转换
使用赋值运算符“=”自动完成转换
值不发生根本性变化,不引发异常
显式转换
Type.Parse方法(参数只能为字符串)
Convert类
装箱拆箱
装箱:值类型 → object类型,隐式进行
拆箱:object类型 → 值类型,显示进行(需要强制类型转换)
影响程序效率,应尽量避免
0 条评论
下一页