C#重点知识点

基础的语法和概念

  1. 显示和隐式转换
    显示类型转换的语法: (类型标识符)表达式

显示类型转换可能导致错误(数据溢出)

  1. 值类型和引用类型
数据类型
值类型
引用类型
简单类型
结构类型
枚举类型
接口
数组
委托
  • 值类型:直接存储数据的值,在栈中存储,没有单独的堆分配
  • 引用类型:不直接存储数据的值,而是指向所要存储的对象(即存储对象的地址)
    创建引用类型对象的方法是使用new操作符,将对象的地址赋给创建的变量

相对值类型而言,引用类型内存开销更大,访问速度稍慢

  1. 结构类型和枚举类型
  • 结构类型的声明
  • 结构类型变量的定义
  • 结构变量的使用
  • 枚举类型的声明
  • 枚举成员的赋值
  • 枚举类型变量的定义
  • 枚举变量的使用
  1. String、Math、Convert、DateTime类
    Convert类用于提供强制类型转换的方法
  2. 数组

数组是引用类型,其数据在堆中存储,数组之间的赋值相当于将指向的地址赋值给另一个数组

  • 一维数组的定义
    数组类型[] 数组名;
  • 二维数组的定义
    数组类型[,] 数组名;
  • 交错数组
    数组类型[][] 数组名;
    由数组元素构成,数组元素的维度可以不同

数组的初始化

  1. 动态初始化

new关键进行初始化

  1. 静态初始化

必须与数组的定义一起出现

  1. Array类和ArrayList类
    Array类提供了对数组的操作方法
    Arraylist类则是对Array类的优化
  2. List类
    提供对列表进行搜索,排序和操作的方法
  3. 命名空间
    使用命名空间的方法来组织类,同一命名空间下所有的类,必须独立且唯一
    使用using关键字来导入命名空间
    格式: using [别名=] 命名空间([]内的内容可以省略)

命名空间可以嵌套,using关键字导入的只能是命名空间,不可导入命名空间中的类

  1. .Net 跨语言跨平台
  1. 跨语言
  2. 跨平台
  1. MSIL
    中间语言,即在编译过程中产生与机器无关的程序集
  2. .Net 框架

.Net Framework包括类库FCL以及公共语言运行库CLR
CLR分为公共语言规范CLS以及通用类型系统CTS

.Net框架
FCL
CLR
CLS
CTS
  1. 堆和栈
  • 栈空间:先进后出的数据结构
    值类型数据在栈空间中分配
    值类型变量和引用类型变量都是在栈空间分配存储空间的
    堆空间的操作由系统进行管理
  • 堆空间:任意顺序存入和移除的数据结构
    引用类型的数据(对象)在堆空间中分配

注意变量与数据的区别,引用类型的变量在栈中分配存储空间,但引用类型的数据却在堆中分配存储空间

面向对象

  1. 类的定义

类声明的方法:

类的访问修饰符 Class 类名
{
类成员
};
  1. 属性
    属性只能由get和set访问器,不能包含除此之外的其他字段、方法或属性
    如果需要使用属性进行读取或写入操作则直接使用对象.属性即可

属性是类中可以像类中的字段一样被访问的方法
属性可以为类字段(属性的后备字段)提供保护,防止字段在对象不知道的情况下被修改,体现了对象的封装性

  1. 构造函数和析构函数
  • 构造函数
    调用默认构造函数
    类名 对象名 = new 类名();
    调用带参构造函数
    类名 对象名 = new 类名(参数列表);

与类的名称相同,可以重载,但不可以被继承
创建类对象时构造函数会自动执行
没有任何返回类型 ,既不属于返回值函数也不属于void函数
当为类提供了有参的构造函数时,C#编译器就不会再自动创建无参的构造函数

  • 析构函数
    在对象被销毁时自动调用

析构函数的名称是~类名,一个类只可有一个析构函数,不可以重载,不能被继承
对象被系统销毁时自动调用类的析构函数
没有任何返回类型 ,既不属于返回值函数也不属于void函数

  1. 类对象内存空间分配

对象引用变量—栈空间
对象实例—堆空间
对象引用变量中存储对象实例的地址,故可以通过对象引用变量操作对象实例

  1. 静态方法、静态字段
类成员
静态成员
动态成员
动态字段
动态方法
静态字段
静态方法

静态成员又称为类成员,而动态成员成为对象成员

  • 静态方法
    静态的方法不可访问非静态成员(非静态的成员只有在对象存在时才具有意义)
    – 静态构造函数的使用

一个类中只可有一个静态构造函数且必须是无参的
在类的实例创建或静态字段被引用之前自动调用静态构造函数
在所有的构造函数中静态构造函数是最先被执行的

using System;
namespace study
{
    class W
    {
        static public int sf = 0;//静态字段,需设置访问级别
        static  W()//静态构造函数,默认访问限制即为public
        {
            W.sf = 10;
        }
        public W()
        {
            W.sf++;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            W w = new W();//先调用的静态构造函数,再调用默认构造函数
            Console.WriteLine(W.sf);
        }
    }
}

运行结果:
运行结果
10+1=11

  • 静态字段
    类中所有的成员共享的字段,静态字段存放在类的公共区,用于解决数据共享问题
    就如上面代码中的W.sf字段,它是公共的字段,每一个方法对它的操作都会影响另一方法对它的操作
  1. this关键字
  • this.成员名 用于区分类的成员和本地变量或参数(this.成员名表示类的成员)
  • this 对当前实例的引用,引用当前正在操作的对象
  1. 重载
  • 方法的重载
    同一方法名,但参数列表不同(参数个数或参数的类型不相同)

成员签名=方法名+参数列表
注意:成员签名不包含返回类型

  • 运算符重载
    语法:public static 返回类型 operator 运算符(参数列表){...}

运算符重载均为类的静态方法

  1. 方法覆写(重写)
    默认情况下,方法是非虚拟的,不能重写非虚方法
    可重写的方法必须是virtual\abstract的,用override关键字重写方法

继承关系中子类中编写与父类有相同名称和参数的方法

同名方法类型基于什么关系特点
重载同一个类方法名相同,参数列表不同
重写基类与子类方法名和参数列表都相同
  1. 浅复制、深复制
类对象
所指实例
引用变量
  • 浅复制
    复制非静态值类型成员和引用类型成员的引用
    使用非静态方法MemberwiseClone进行浅复制
  • 深复制
    创建与原始对象中对应字段相同的字段,此引用与原始对象的引用是不相同的
  1. 嵌套类
    嵌套类可以访问包含类的私有成员和受保护的成员
    创建嵌套类实例的格式包含类.嵌套类 变量名 = new 包含类.嵌套类();

声明完全包含在另一个类的类声明中的类
嵌套类只可以通过包含类访问

  1. 索引器
    索引器允许类或结构的实例按照与数组相同的方式进行索引
    声明语法public int this [索引类型 index]{get和set访问器}

get与set访问器具有与索引器相同的形参列表
set访问器还具有value参数

  1. 委托
  • 声明委托类型 [访问修饰符] delegate 返回类型 委托类型名(参数列表);
  • 实例化 委托类型名 委托对象名 = new 委托类型名(静态方法或实例方法);委托类型名 委托对象名 = 方法;
  • 调用 委托对象名(实参列表)
  1. Lambda表达式
    形如:输入参数(可选)=>表达式/语块

可以将Lambda表达式直接赋给委托对象

  1. 事件的使用

  2. 继承

  3. 接口

  4. 抽象方法和抽象类

  5. IComparable和IComoparer 接口

  6. 多态

  7. 泛型

  8. 反射的概念

  9. 反射的应用

  10. 枚举器

  11. 迭代器的实现

  12. get 访问器

  13. IEnumerator/ IEnumerable 接口

文件操作和异常

  1. File Directory
  2. 文件流
  3. 创建、打开、修改文件
  4. 文件序列化
  5. FileStream、 StreamReader/Writer
  6. 异常处理
  7. try catch
  8. 异常处理的流程

多线程

  1. 线程
  2. Thread的属性
  3. Thread的方法
  4. 线程互斥的方法
  5. 线程优先级
  6. 线程同步
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值