C#教程
类和名称空间
初识类和名称空间
- 类的颜色:水蓝色
- 花括号:代表名称空间
- 小方块+树形结构:代表类
- ctrl+句号:自动提示
类库的引用
- 黑盒引用(DLL引用) NuGet技术
类和对象
类与对象的关系
- 对象,实例
- 引用变量与实例的关系:孩子和气球
类的三大成员
- 属性 方法 事件
静态成员与实例成员
- 静态成员:类的成员
- 实例成员:对象的成员
- 绑定:编译器如何把成员和类或对象关联起来 早绑定 晚绑定
- .是成员访问操作符
C#语言基本元素
构成C#语言的基本元素
- 关键字
- 操作符
- 标识符
- 标点符号
- 文本(字面值) L,F,D后缀
- 注释
类型,变量,对象
-
dynamic 模仿弱类型
-
C#数据类型
引用:类,接口,委托
值:结构,枚举 -
变量表示了存储位置
-
值类型的变量存储了“实例”
-
引用类型的变量存储了对象的地址
-
局部变量在栈上分配内存
-
局部变量必须进行初始化,成员变量的默认值是全零
-
装箱与拆箱
方法
- 方法永远是calss或struct的成员
- ctor
方法重载
- 方法签名:方法名+类型形参的个数+每个形参的类型和种类(值,引用,输出)
调试方法
- 逐语句F11 逐过程F10 跳出SHIFT + F11
操作符
基本操作符
-
x.y
-
f(x)
-
a[x]
-
x++ x--
-
new
- 匿名类型与隐式类型
- var person = new {Name = “yan”, age=25};
- new作为关键字,可以隐藏父类方法
-
typeof
-
default
-
checked unchecked
-
抛出异常OverFlowException
- 关键字用法checked{}
-
delegate
- 声明匿名方法,已经被lamda表达式取代
-
sizeof
- 基本结构体类型 + string + object
- 在不安全的上下文中,可以获取自定义的结构类型
- -> 指针 ???引用类型的局部变量不用new会怎么样
一元操作符
- & *
- + - 因为最小值和最大值的绝对值不一样,注意溢出 ~
- !
- ++ –
- await
- (T)
类型转换
隐式类型转换
- 不丢失精度???int+1
- 装箱
- 子类->父类 多态
显式类型转换
- 有可能丢失精度 cast,部分类型无法转换,改用convert ??? 负数->正数
- public static explicit operator Monkey(Stone stone)
- 拆箱
- 使用convert类
- 使用toString方法或各数据类型的TryParse
乘法,加法操作符
- 与数据类型相关
- 留心数值提升
移位操作符
- 左移补0 右移根据正负补0或1
关系操作符
- IS 变量所引用的实例是不是目标类型或目标类型的子类
- AS 判断是否IS目标类型,否则返回NULL
位与 位或 位异或
条件与 条件或
NULL合并操作符
- x ?? 0
- Nullable<int> 相当于 int?