C#语言入门详解

008-009 方法的定义、调用与调试
1.方法的由来
a.方法(Method)的前身是C/C++的函数(function)
- 方法是面向对象的范畴概念,在非面向对象语言中仍然称函数。
b.方法永远都是类(或结构体)的成员
c.方法是类(或结构体)最基本的成员支一
d.需要方法和函数的原因
2. 方法的定义与调用
a. 声明方法的语法详解
b. 方法的命名规范
方法=方法头+方法体,
书写规范:🥇大写,大驼峰🥈动词或动词短语作为名字(帕斯卡命名法)
c. 静态方法和实例方法
静态方法隶属类class,实例方法则不是
d.调用方法
010~012操作符的原理和使用
操作符、表达式和语句都是为方法服务,语句就是为了组成方法体(算法逻辑)
1. 操作符概览
a.操作符 Operator,也叫“运算符”。
b.操作符是用来操作数据的,该数据称为“操作数” Operand
2. 操作符的本质
a. 操作符的本质是函数(即算法)的“简记法”
b. 操作符不能脱离与他关联的数据类型
- 可以说操作符就是与固定数据类型相关联的一套基本算法的简记法。
- 自定义数据类型创建操作符
c.运算优先级
- 表格中优先级从上到下降低,同行优先级相同。
- 赋值操作符最晚运算,从右往左运算,其它运算符从左往右运算
2. 操作符的本质
a. 操作符的本质是函数(即算法)的“简记法”
b. 操作符不能脱离与他关联的数据类型
- 可以说操作符就是与固定数据类型相关联的一套基本算法的简记法。
- 自定义数据类型创建操作符
3. 操作符的优先级
a. 操作符的优先级
- 可以使用圆括号提高被括起来表达式的优先级
- 圆括号可以嵌套
- 不像数据里由方括号和花括号,在C#语言里"[]"与“{}”有专门的用途
b. 同优先级操作符的运算顺序
- 除了带有赋值功能的操作符,同优先级操作符都是由左向右进行运算
- 带有赋值功能的操作符的运算顺序是由右向左
- 与数学运算不同,计算机语言的同优先级运算没有“结合律”
4. 同级操作符的运算顺序
5. 各类操作符的示例
a基本操作符
b 一元操作符
这种操作符,只有1个操作数。又称“单目操作符”
c类型转换
c1. 隐式(implicit)类型转换
- 代码中不用明确告诉值的数据类型转换成另一种数据类型,编译器自动转换
- 子类向父类的转换
- 装箱(类型章节讲过)
c2. 显式(explicit)类型转换
写代码时,明确告诉值的数据类型转换成另一种数据类型,编译器自动转换
- 可能丢失精度(甚至错误)的转换,即cast(铸造的意思),操作符(A)b
- 拆箱
- 使用Convert类
- ToString方法与各类数据的Parse/TryParse方法
c3.自定义类型转换操作符 (T)x
d 乘法操作符 和 加法操作符
e 其它类型操作符
- 逻辑“与” &、逻辑XOR ^、逻辑OR |
- 条件And &&、条件OR ||
f 赋值和lambda表达式
017 字段、属性、索引器、常量
一、字段 field
1. 字段的定义
下面案例通过静态字段来表示类型当前的状态。
下面用for循环代替实例化。
2.字段的声明
语法:特性opt 1个或多个修饰符 类型 变量声明器 ;
3.字段的初始值
4.只读字段
二、属性
1.什么是属性
1.1 属性(property)定义
- 一种用于访问 对象/类型 的特征的成员,特征反映了状态。
1.2 属性是字段的自然扩展
下面展示字段一步一步演化成属性的.
1.3 属性由Get/Set方法进化而来
1.4 “语法糖”
- 属性背后的秘密:语法糖是在编程语言中,一小段简单逻辑是为了隐藏复杂的逻辑,目的就是为了方便程序的编写
2. 属性的声明
2.1 完整声明
语法:特性opt 修饰符opt 类型 属性名字 { get set}
2.2 简略声明
简略声明的属性功能上与共有的字段是完全一样的,也就是说可能值不受保护,可能把非法值赋给属性,带有这种属性的类用来传递数据
2.3 动态计算的属性
2.4 注意实例属性和静态属性
静态属性:用statci修饰的属性,隶属于数据类型
2.5 属性的名字一定是名词
2.6 只读属性
只有getter,没有setter
3. 属性与字段的关系
- 一般情况下,他们用于表示实体(对象或类型)的状态
- 属性大多情况下是字段的包装器 wrapper
- 建议:永远使用属性而不是字段来暴露数据,即字段永远是被保护的protected 或 private
三、索引器
1. 什么是索引器
选修,用途不多。
018 参数——传值、输出、引用、数据具名、可选参数,this参数
一、传值参数——传递值类型参数
1.值参数
1.1传值参数→值类型
1.2 传值参数→引用类型,并新创建对象
1.3 传值参数→引用类型,只操作对象,不创建对象
二、引用参数
1.定义
2. 引用参数图解
2.1引用参数→值类型
2.2. 引用参数→引用类型,创建新对象
三、输出形参
1.定义
2.输出参数图示
2.1输出参数→值类型
2.2输出类型→引用类型
四、数组参数
1.必须时形参列表中的最后一个,由params修饰
五、具名参数
六、可选参数
七、扩展方法(this参数)
019 委托详解
一、什么是委托
1.委托的定义
2.一切皆地址
3.直接调用与间接调用
4.委托的简单使用
二、委托的声明(自定义委托)
1.委托是一种类 class
2.委托的声明方式与一般的类不同.
三、委托的使用
1.实例:把方法当作参数传给另一个方法
1.1 模板方法
1.2 回调(callback)方法
2. 注意
难精通、易使用、功能强大的东西,一旦被滥用后果非常严重。
四、委托的高级使用
1.多波(multicast)委托
2. 隐式异步调用
2.1 同步与异步的简介
2.2 同步调用与异步调用的对比
2.3 隐式多线程 与 显示多线程
020-022 事件详解
一、了解事件概念
1.定义:Event
2.角色:使对象或类具备的通知能力的成员
3.使用:用于对象或类之间的动作协调与信息传递(消息推送给)
4.原理:事件模型Event Model中的两个“5”
- 事件模型在构建运作的“5”个步骤:
- “发生→响应”的“5”个部分
5.提示
二、事件的应用
1.实例演示
2.事件E模型的五个组成部分
三、深入理解事件
四、事件的声明
4.1 语法
4.1.1 完整声明
023 委托,Lambda,LINQ串讲
一、委托
1.什么是委托
023 类
一、什么式类
026 重写、多态
027接口、抽象类
029 接口
030 接口隔离 反射特性 依赖注入
030 泛型,partial类,枚举,结构
一、泛型 无处不在