C# 知识点汇总整理 -- 附思维导图

陈言必行 发表于 2021/11/16 20:00:17 2021/11/16
【摘要】 本文是对C#系列知识点梳理。针对每个概念和各种知识点的整理,没有学习方向的童鞋可以进来看一下,按照这个学完就可以熟练掌握C#这门编程语言了~

前言

本文属于C#零基础入门之百识百例系列知识点整理目录。此系列文章旨在为学习C#语言的童鞋提供一套系统的学习路径。此系列文章都会通过【知识点】【练习题】的形式呈现。有任何问题,你都可以通过评论私信等方式找到我,我会一对一解答你的问题。


系列文章目录: 导图
《C#零基础入门之百识百例》 学习专栏地址


一,变量与常量

1.1 命名

  • 命名规则
  • 组成规则
  • 驼峰命名
  • 见名知意

1.2 使用

  • 定义声明
  • 作用域
  • oreadonly,const关键字

二,数据类型

2.1 值类型

  • 在内存中存储的是一个具体的值

2.2 引用类型

  • 在内存中存储的是一块内存地址

2.3 类型转换

  • 强制转换
  • Convert类

2.4 拓展:字符串类型

  • 常用方法
  • @字符
  • $字符

三,运算符

3.1 算数运算符

  • +、-、*、/、%
  • ++,–

3.2 赋值运算符

  • =
  • +=、-=、*=、/=、%=

3.3 关系运算符

  • 或与非 | & !
  • 双与&&,双或 ||
  • 异或^
  • 三目运算符
    • ? :

四,语句类型

4.1 顺序语句

4.2 分支语句

  • if else
  • switch case
  • break,continue,goto

4.3 循环语句

  • for
  • white 和 do…white
  • foreach

五,数组

5.1 一维数组

  • 概念
  • 关键字
  • 声明
  • 初始化

5.2 数组的使用

  • 遍历
  • 排序
  • 查找

5.3 二维数组

  • 声明
  • 初始化
  • 访问
  • 下标取值
  • 遍历数组
  • 应用
  • 表示地图

六,函数

6.1 方法的声明

  • 语法格式
  • 注意事项

6.2 方法的调用

  • 调用语法

6.3 方法的参数

  • 什么是参数?
  • 参数的写法
  • 参数默认值
  • 特殊参数标识
    • ref
    • out
    • param
    • 位置参数,命名参数

6.4 方法返回值

  • 概念说明
  • return关键字

6.5 方法的重载

  • 定义:使用同一个方法名,参数类型或个数不一样的函数
  • 注意事项

6.6 方法的递归

  • 定义:递归的本质就是自己调用自己。
  • 要素
  • 递归条件
  • 递归出口

七,类和对象

7.1 访问修饰符

  • 修饰对象
    变量,属性,方法,类
  • 修饰作用
    限制修饰内容的访问权限
  • 修饰符
    • public
      公有的,不受限制可任意访问
    • private
      私有的,只限于本类中访问
    • protected
      保护的,只限于本类和子类中访问
    • internal
      内部的,只限于程序集内访问
    • protected internal
      内部保护的,只限于程序集内或者子类访问

7.2 类和对象

  • 定义:拥有一定特性和功能额一个类别
  • 语法
    class 类名{ // 实现 }
  • 成员
    成员变量
    成员方法
  • new 关键字
    实例化 T t1 = new T();
    访问对象成员
  • this关键字
    表示当前对象
  • static关键字
    用途
    修饰变量,方法,类
  • 声明
    写法示例
    静态类的访问
  • 类名.属性名
    和非静态之间区别
    类的特殊函数
  • 构造函数
    定义概念
    语法规则
    调用方式
  • 其他构造
    • 静态构造
      • 创建静态构造
      • 语法规则
    • 私有化构造
      • 限定只有本类中实例化
  • 析构函数
    定义概念
    调用方式
    语法特性

八,面向对象

8.1 封装

  • 原则:在程序中,尽量不要出现重复的代码
  • 封装
    • 类中只存储当前类有关内容
    • 每一个功能模块都是一个方法

8.2 继承

  • 概念理解
  • 实现语法
  • 继承后对父类的访问
  • 单继承
  • 子类构造
    • 执行逻辑:优先执行父类构造,在执行子类构造
    • 构造函数无论有参无参,无论有多少个子类都必须至少有一个和父类保持一致
  • base关键字
    • 语法: 子类构造:base(形参传递)

8.3 多态

  • 向上转型(隐式转型)
    • 将一个子类类型的对象称作父类类型
  • 向下转型(强制转换)
    • 将一个父类类型的对象称作子类类型
    • 强制转换语法
    • as关键字
    • is关键字
  • override关键字
    • 重写方法只能修改方法体
    • base.方法名()调用父类方法
      面试问的多态
    • 不同对象同一类型,这个类型的对象都可以做某一件事
    • 因此不同的对象在做这件事的时候,做的方式也是不同的,当然结果也是不同的

九,接口,结构体和枚举

9.1 接口

  • 定义,关键字
    • interface 接口名称
  • 接口实现
    • 接口的实现实际上和类之间的继承是一样的,也是重写了接口中的方法,让其有了具体的实现内容。
  • 接口中的多态实现
    • 定义接口并使用类实现了接口中的成员。
    • 创建接口的实例指向不同的实现类对象。

9.2 结构体

  • 定义,关键字
  • 结构体和类
    • 相同点
      • 都可以有变量,属性,方法
      • 都可以有静态变量,方法
      • 都是使用new关键字实例化
    • 不同点
      • 类是引用类型,结构体是值类型
      • 构造函数的使用上的不同
      • 与类相比结构体无继承关系
      • 结构体重不能定义虚方法
    • 用途

9.3 枚举

  • 概念定义
  • 使用示例
  • 类型转换
  • osealed关键字
    • 表示密封,可修饰类,方法
    • sealed修饰的类无法被继承
    • sealed只能修饰重写(override)方法
  • 运算符重载
    • 可重载的运算符
      • 算数:+,-,x,/,%,++,–
      • 关系:必须成对重载【> <】,【>= <=】,【==,!=】
      • 逻辑:& | !^
    • 作用
      使不能进行运算的对象,运算符重载后,也能通过运算符运算
  • 关键字
    operator
  • 访问修饰
    必须是public static
  • 定义语法
    public static 返回值类型 operator 运算符(参数){//⽅法体}
  • 返回值
    • 一元:返回值必须是参数类型或者参数子类型
    • 二元:返回值可自定义
  • 用途
    对象与对象之间运算的快捷方式

十,委托和事件

10.1 委托

  • 委托定义
    [访问修饰符] delegate 返回值 委托名称 (参数列表);
  • 关键字
    delegate
  • 委托使用
    使用示例
  • 多波委托
    概念说明
    使用示例
  • 系统带的委托
    • Action
      没有返回值的委托
      可传递无限个参数
    • Func
      带有返回值的委托
      最后一个参数代表返回值
      最多传递16个参数和返回值
  • 匿名函数
    语法概念
  • Lambda表达式

10.2 事件

  • 定义
  • 事件就是一个特殊的委托对象
  • 命名空间
  • 概念定义
  • using 关键字
    • 命名空间内可以包含类,接口,结构体,枚举,命名空间
    • 访问命名空间内容

十一,泛型和系统类

11.1 泛型

  • 泛型
    • 表示一种模糊的类型
    • 泛型的应用范围
  • 类/接口
    • 声明泛型类 类名<泛型标识符>
    • 使用泛型类 T<int> p = new T<int>();
  • 方法
    • 声明泛型方法 方法名<泛型>
    • 用泛型作为方法返回值类型
    • 用泛型作为方法参数类型
  • 泛型特点
    • 泛型类型不能继承
    • 但泛型类和泛型接口可以继承/实现
    • 在继承泛型类或泛型接口的时候必须将泛型设置为实际类型进行使用

11.2 系统类 - 数据结构

  • Array 数组
    必须制定类型,指定长度,内存地址连续
  • Array List 动态数组
    存储空间随着元素个数变换,地址不连续
    内部定义好的增删改查的基础函数
  • List 列表
    一个引用类型的容器,只能存一种类型数据
    存储空间随着元素数量进行变换
  • Stack 栈
    先进后出 - 枪膛上子弹
  • Queue 队列
    先进先出 - 超市排队
  • Dictionary 字典
    通过key值去找value
    内部定义好的增删改查

十二,进阶部分

12.1 异常

  • 语法概念
    • 一个try可以有多个catch
      • 若多个catch中没有继承关系,顺序随意
      • 若多个catch有继承关系,则子类在前,父类在后
  • 自定义异常

12.2 反射

  • 概念定义
    反射指程序可以访问、检测和修改它本身状态或行为的一种能力。
  • 优缺点
    • 优点
      • 反射提高了程序的灵活性和扩展性
      • 降低耦合性,提高自适应能力
      • 它允许程序创建和控制任何类队形,无需提前硬编码目标类
    • 缺点
    • 性能问题:使用反射基本上是一种解释操作,用于字段和方法接入是要远慢于直接代码
    • 使用反射会模糊程序内部逻辑;反射代码比相应的直接代码更复杂
  • 发射用途
    • 它允许在运行时查看特性
    • 它允许审查集合中的各种类型,以及实例化这些类型
    • 它允许延迟绑定方法和属性
    • 它允许在运行时创建新类型,然后使用其执行一个逻辑
  • 查看元数据

12.3 特性

  • 定义概念
    • 特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。
  • 规定特性
    • [attribute(positional_parameters, name_parameter = value, …)]element
  • 特性(Attribute)的名称和值是在方括号内规定的,放置在它所应用的元素之前。positional_parameters 规定必需的信息,name_parameter 规定可选的信息。
  • 预定义特性
    • AttributeUsage
    • Conditional
    • Obsolete
  • 创建自定义特性
    • 声明
    • 构建
    • 在目标元素上应用
    • 通过反射访问

12.4 多线程

  • 线程定义
    • 线程 被定义为程序的执行路径。每个线程都定义了一个独特的控制流。
  • 线程生命周期
    • 未启动状态
      • 线程实例被创建,但Start方法未被调用
    • 就绪状态
      • 当线程转变好运行并等待CPU周期时的状态
    • 不可运行状态
      • 已经调用Sleep方法
      • 已经调用Wait方法
      • 通过 I/O 操作阻塞
    • 死亡状态
      • 当线程已完成执行或终止执行的状态
    • 主线程
      • 进程中第一个被执行的线程称为主线程。
  • Thread 类常用的属性和方法
  • 创建线程
    线程是通过扩展 Thread 类创建的。
  • 管理线程
    Thread 类提供了各种管理线程的方法。
  • 销毁线程
    Abort() 方法用于销毁线程。


~完整导图~

请添加图片描述

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请发送邮件至:cloudbbs@huaweicloud.com;如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。