C# 零基础入门知识点汇总

前言

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


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


一,基础语法(1~10)

  1. 初识程序 – Hello Csharp 【点击查看
    C#是由C和C++衍生出来的面向对象的编程语言,它在继承C和C++强大功能的同时去掉了一些它们的复杂特性

  2. 数据类型 – 值类型, 引用类型 – 写默认值 【点击查看
    数据类型主要用于指明变量和常量存储值的类型,C# 语言是一种强类型语言,要求每个变量都必须指定数据类型。

  3. 变量常量 – 两数交换 – readonly,const关键字 【点击查看
    常量和变量都是用来存储数据的容器,在定义时都需要指明数据类型。

  4. 输入输出 – 模拟登陆 【点击查看
    输入和输出是用户与计算机之间进行交流的方法。

  5. 输出格式控制 – 竖式计算 【点击查看
    使用Console类的Write方法和WriteLine方法输出时,可以通过设置输出格式字符串以更合适的格式输出信息

  6. 类型转换 – 强制转换 – Convert类 【点击查看
    C#是强类型语言,每个变量都有严格的类型。如果运算符两侧的类型不一致,在运算是要进行类型转换。

  7. 算数运算符 – 圆的面积 【点击查看
    运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C# 有丰富的内置运算符,本文带你学习C# 中算数运算符。

  8. 比较和逻辑运算符 – 判断闰年 【点击查看
    比较运算符是在条件判断中经常使用的一类运算符,包括大于、小于、不等于、大于等于、小于等于等。逻辑运算符主要包括与、或、非等,它主要用于多个布尔型表达式之间的运算。

  9. 位和赋值运算符 – 2的n次幂 【点击查看
    所谓的位运算,通常是指将数值型的值从十进制转换成二进制后的运算,由于是对二进制数进行运算,所以使用位运算符对操作数进行运算的速度稍快。

  10. 其他运算符和优先级 – 解方程式 【点击查看
    在使用 C# 编程时字符串是比较常用的一种数据类型,例如用户名、邮箱、家庭住址、商品名称等信息都需要使用字符串类型来存取。


二,流程控制(11~20)

  1. 顺序结构 – 流程图 – 梯形面积【点击查看
    顺序执行的程序中语句的次序很重要,不能随意调整顺序执行语句顺序,这将会导致程序结果出错。

  2. 选择结构 – if:else – 判断偶数【点击查看
    C#中的if else语句是最常用的条件语句,并且 if else 句的形式有多种,包括单一条件的 if语句、二选一条件的 if else 语句以及多选一条件的 if , else if语句。

  3. 选择结构 – switch – 成绩查询【点击查看
    C# switch case 语句也是条件语句的一种,与 if else语句是类似的,但在判断条件的选择上会有一些局限性。

  4. 循环结构 – for 打印乘法表【点击查看
    循环语句和条件语句一样都是每个程序中必不可少的,循环语句是用来完成一些重复的工作的,以减少编写代码的工作量。

  5. 循环结构 – while - N阶乘【点击查看
    C# while 循环与 for 循环类似,但是 while 循环一般适用于不固定次数的循环。

  6. 循环结构 – do…white – 这题会了吗?【点击查看
    C# do while 循环可以说是上一节 C# while循环的另一个版本,与 while 循环最大的区别是它至少会执行一次。

  7. break,continue,goto – 代码敲七? – 斐波那契数列【点击查看
    C# break 语句用于中断循环,使循环不再执行。如果是多个循环语句嵌套使用,则 break 语句跳出的则是最内层循环。

  8. 算法概述 – 特殊回文数【点击查看
    算法是解决特定问题求解步骤的描述,在计算机汇总表现为指令的有限序列,并且每条之类表示一个或者多个动作。

  9. 穷举法 – 百钱百鸡问题【点击查看
    在进行归纳推理时,如果逐个考察了某类事件的所有可能情况,因而得出一般结论,那么这结论是可靠的,这种归纳方法叫做穷举法

  10. 异常处理 – 除数为0【点击查看
    异常是在程序执行期间出现的问题。C# 中的异常是对程序运行时出现的特殊情况的一种响应。


三,数组相关(21~30)

  1. 数组遍历 – 删除0元素【点击查看
    数组从字面上理解就是存放一组数,但在 C# 语言中数组存放的并不一定是数字,也可以是其他数据类型。在一个数组中存放的值都是同一数据类型的,并且可以通过循环以及数据操作的方法对数组的值进行运算或操作。

  2. 数组排序 – 冒泡排序【点击查看
    冒泡排序也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。

  3. 数组排序 – 选择排序【点击查看
    选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。

  4. 数组排序 – 插入排序【点击查看
    插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

  5. 数组查找 – 顺序查找 – 求最值【点击查看
    查找就是在一批数据中查找指定数据,如最值查找或指定值查找,查找结束后应该给出查找成功与否的结论。

  6. 数组查找 – 二分查找 – 查找指定元素【点击查看
    折半查找又称二分查找,二分查找是对有序数组而言的,所以在使用二分查找前要确保数组已经是顺序的。

  7. 多维数组 – 二维数组 – 矩阵翻转【点击查看
    C#中允许定义多维数组,多维数组的每个元素又是一个数组,称为子数组。

  8. 可变数组 – 交错数组 – freach语句数组求和【点击查看
    交错数组是数组的数组。与矩形数组不同,交错数组的子数组可以有不同数目的元素。

  9. 数组类常用方法 – 清空,复制,逆转,排序【点击查看
    Array 类是 C# 中所有数组的基类,它是在 System 命名空间中定义。Array 类提供了各种用于数组的属性和方法。

  10. 数组应用 – 推箱子游戏 – 地图初始化【点击查看
    最经典的推箱子游戏,类似的游戏你一定早就玩过。要控制搬运工上下左右移动,来将箱子推到指定地点。


四,函数介绍(31~40)

  1. 方法介绍 – 猜数游戏【点击查看
    方法是将完成同一功能的内容放到一起,方便书写和调用的一种方式,也体现了面向对象语言中封装的特性。

  2. 方法参数 – ref引用参数 & out输出参数【点击查看
    方法参数的本质是为了在调用者和方法之间实现数据交换,是方法接口的重要组成部分。

  3. 方法参数 – 位置和命名参数【点击查看
    根据参数传递机制的不同,C#方法的形式参数分为四种:值形参、引用形参、输出形参以及形参数组,通过在形参定义时添加不同的参数描述符来表示。

  4. 方法参数 – 可选参数 & param形参数组【点击查看
    C#允许在方法定义时为形参指定默认值,具有默认值的参数称为默认参数或可选参数。

  5. 方法返回值 – 完全数【点击查看
    方法执行过程中遇到return语句,方法会立刻返回,执行流程立刻结束。方法返回的使用介绍和实例练习。

  6. 方法重载 – 回文数【点击查看
    C#的一个类中超过一个方法具有相同名称的现象叫做方法重载。

  7. 递归方法 – 李白打酒【点击查看
    方法直接或间接的调用自己,称为递归调用。递归会产生很优雅的代码。

  8. 常用方法 – String类 – 字符串常用方法【点击查看
    C#中String类常用方法汇总14个String类的常用方法,字符串比较,字符串截取,字符串连接,字符串转换。

  9. 常用方法 – Math类 – Math常用方法【点击查看
    C#中Math类主要用于一些与数学相关的计算,并提供了很多静态方法方便访问。

  10. 方法应用实例 – 推箱子游戏【点击查看
    推箱子游戏是每个人小时候都会玩的一款游戏,玩家需要把箱子推送到相应的位置是上去,现使用C#还原经典版推箱子。


五,类和对象(41~50)

  1. 类的定义和使用 – 鸡兔同笼【点击查看
    程序的数据和功能被组织为逻辑上相关的数据项和函数的封装集合,称之为类。

  2. 类的成员 – 模拟计算器【点击查看
    在 C# 语言中类定义后就要确定类中包含的内容,类中包含的内容被称为类中的成员。

  3. 类的构造析构函数 – 模拟用户注册【点击查看
    构造方法是在创建类的对象时被调用的。通常会将一些对类中成员初始化的操作放到构造方法中去完成。析构方法是在程序结束后自动被调用的。

  4. 静态类 – 温度转换【点击查看
    静态类是不能实例化的,我们直接使用它的属性与方法,静态类最大的特点就是共享。

  5. 类的属性 – 单例模式【点击查看
    C#的属性把字段和访问它们的方法相结合,属性为类用户提供了与字段读写相同的使用方法。属性为类用户提供了与字段读写相同的使用方法;属性值的读写通过get访问器和set访问器实现的,可以对非法的赋值进行检查过滤。

  6. 类的索引 – 数组索引器【点击查看
    索引器的行为的声明在某种程度上类似于属性(property)。就像属性(property),您可使用 get 和 set 访问器来定义索引器。但是,属性返回或设置一个特定的数据成员,而索引器返回或设置对象实例的一个特定值。

  7. 类的运算符 – 学生成绩汇总【点击查看
    运算符重载的其实就是函数重载。首先通过指定的运算表达式调用对应的运算符函数,然后再将运算对象转化为运算符函数的实参,接着根据实参的类型来确定需要调用的函数的重载,这个过程是由编译器完成。

  8. 分布类和分部方法 – 水仙花数【点击查看
    每个分部类的声明中都含有一些类成员的声明,这些分部类可以在一个文件中,也可以在不同文件中。分部方法是在分部类中声明的两个部分中的方法。分部方法的那两个部分可以声明在分部类的不同部分,也可以声明在同一部分。

  9. 作用域和生命期 – 求N位自幂数【点击查看
    在同一个作用域中,C#程序中的每个名字与唯一的实体对应;只要在不同的作用域上,程序就可以多次使用相同的名字来对应不同作用域中的不同实体。

  10. 内嵌类和内嵌方法 – 求解汉诺塔【点击查看
    C#可以在一个类中定义另一个类。如果嵌套的类声明为私有,就不能在包含类外部实例化嵌套类。


六,面向对象(51~60)

  1. 面向对象概述 – 一维多项式求值【点击查看
    面向对象三大特征:封装,继承,多态。封装是指隐藏对象的特征和实现细节,仅对外提供公共访问方式。

  2. 封装介绍 – 二维多项式求值【点击查看
    封装是指隐藏对象的特征和实现细节,仅对外提供公共访问方式。被定义为 “把一个或多个项目封闭在一个物理的或者逻辑的包中”。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。

  3. 继承介绍 – 模拟计算器【点击查看
    继承用于创建可重用、扩展和修改在其他类中定义的行为的新类。继承就是在一个已存在的类的基础上建立一个新的类。继承为多态提供了前提。

  4. 派生类使用 – 等差数列求和【点击查看
    在设计派生类的构造函数时,需要考虑派生类新增成员和从基类继承的数据成员的初始化。

  5. 抽象类 – 经典猫狗案例【点击查看
    抽象类是不完整的类,它只能用做基类来派生出其他类,其中包含的抽象方法必须在每个非抽象派生类中重写。

  6. 密封类 – 任意年月日历输出【点击查看
    同一操作作用于不同类的实例、不同的类型将进行不同的解释,产生不同的结果,即为多态。

  7. 多态介绍 – 简单工厂模式【点击查看
    如果类定义时使用sealed 修饰符进行修饰,则说明该类是一个密封类。密封类只能被用作独立的类,不能从密封类派生出其他类。

  8. 接口 – 模拟银行存储【点击查看
    接口是类和类之间的协议,使用接口可以使得实现接口的类或结构在形式上保持一致,使程序更加清晰和条理化,具有很好的扩展性,并可以方便实现类与类之间的统一管理,是组件技术的重要支撑。

  9. 程序集合命名空间 – using用法【点击查看
    命名空间的设计目的是提供一种让一组名称与其他名称分隔开的方式。在一个命名空间中声明的类的名称与另一个命名空间中声明的相同的类的名称不冲突。

  10. 面向对象经典例题 – 图书管理系统【点击查看
    请利用面向对象分析实现图片管理系统,具有录入,查询 ,删除,显示所有图书信息功能。


七,结构体和枚举(61~70)

  1. 结构体的定义 – 时间设计【点击查看
    C#的结构体类型(或称为结构)是用户自定义类型的一种,它为用户将实际应用中数据类型不同,但互相联系的数据看作一个整体提供了类型支持。

  2. 结构体类型变量 – 学生数据录入【点击查看
    C#中结构体类型变量称为对象或称为结构实例。定义结构体类型变量称为把结构体类型实例化,这时会根据结构体类型的定义为结构体变量分配相应的存储空间。

  3. 结构体数组数组 – 学生成绩存储【点击查看
    结构体类型的数组:当有多个同一结构体类型的结构体实例时,可以将它们组织成一个结构体数组。结构体数组的元素类型为结构体类型。

  4. 结构体在方法中的使用 – 学生成绩排序 – 排序拓展【点击查看
    当结构体作为方法的值参数、引用形参或输出形参时,方法的定义和调用语法与其它数据类型作为方法的形参时基本一致。

  5. 结构体和类的对比 – 对战文字游戏【点击查看
    类的对象是存储在堆空间中,结构存储在栈中。堆空间大,但访问速度较慢,栈空间小,访问速度相对更快。简言之:同生共死Class,随用随扔Struct。

  6. 枚举类型的定义和使用 – 猜拳游戏【点击查看
    如果希望得到一个固定的集合值,就采用枚举。枚举与结构体类型一样,是由程序员定义的类型。

  7. 枚举常用方法介绍 – 使用示例【点击查看
    枚举与结构体常用方法的使用示例和注意事项。

  8. 位标识 – 枚举拓展【点击查看
    在开发过程中很多人都有使用单字的不同位作为表示一组开 / 关标志的使用情况。枚举类型为此提供了简便的实现方法。

  9. 初识LINQ – 语法介绍和实例【点击查看
    Linq是在.NET Framework 3.5之后的版本出现的.在程序中的数据和数据库的数据相反,保存在类对象或结构中的数据差异很大。没有通用的查询语言从数据结构中获取数据

  10. LINQ的查询语法 – 示例练习【点击查看
    写LINQ是又两种语法:1.查询语法:查询语法是声明形式的,使用查询表达式形式来书写。2.方法语法:方法语法是命令形式的,它使用的是标准的方法调用。方法是一组叫做标准查询运算符的方法。


八,委托和事件(71~80)

  1. 委托介绍 – 战士升级示例【点击查看
    委托的存在是因为,我们有时候需要将一个函数作为另一个函数的参数,这时就要用的委托机制。委托用关键字delegate声明,他实际上定义了一种“函数类型”,明确规定了函数参数类型和返回值类型。

  2. 多波委托 – 妈妈喊吃饭啦【点击查看
    多播委托,我们把包含多个函数的委托称为多播委托,所有被委托函数的引用都存储在多播委托类的调用列表中,当调用多播委托时,会按顺序依次调用列表中的所有函数。

  3. 匿名函数 – lamada表达式【点击查看
    匿名方法提供了一种传递代码块作为委托参数的技术。匿名方法是没有名称只有主体的方法。匿名方法本质上是一个方法,只是没有名字,任何使用委托变量的地方都可以使用匿名方法。

  4. 事件介绍 – 热水器烧水示例【点击查看
    事件和函数的关系:事件具有可以注册多个函数(和解绑函数)的功能,而函数如果要注册和解绑其他在其主体上运行的函数则需要改动该函数本体的代码,这就是区别。

  5. 系统事件 – Actin/Func【点击查看
    除了我们自己定义的委托之外,系统还给我们提供过来一个内置的委托类型,Action和Func。两种委托类型的区别在于:Action委托不提供返回类型, 而Func提供返回类型

  6. 委托事件实例练习1 – 猫捉老鼠【点击查看
    杰瑞鼠带着和杰克鼠去汤姆猫家偷奶酪,当有一只老鼠看到猫来了或者听见猫的声音都会做好逃跑的准备,并且通知同伴躲藏起来并且做好逃跑的准备。

  7. 委托事件实例练习2 – 刘备招亲甘露寺【点击查看
    刘备招亲 :故事出自《三国演义》。刘备借东吴的荆州后,没有归还之意,周瑜便定下了美人计,企图乘刘备过江之机,把刘备扣留起来作为人质,以夺取荆州。

  8. 委托事件实例练习3 – 观察者模式【点击查看
    观察者模式是一种行为设计模式, 允许你定义一种订阅机制, 可在对象事件发生时通知多个 “观察” 该对象的其他对象。

  9. 常见和不常见运算符汇总 – 示例练习【点击查看
    你知道C#的??运算符 和 ??=运算符吗? 来看看有哪些C#运算符是你没有使用过的吧。

  10. 类型转换汇总 – 拆箱装箱【点击查看
    类型转换是接受一个类型的值并使用它作为另一个类型的等价值的过程。转换后的值应和原值一样,但它是目标类型。


九,泛型和系统类(81~90)

  1. 泛型概念 – 泛型类/接口/委托/方法【点击查看
    泛型是程序设计语言的一种特性。允许程序员在强类型程序设计语言中编写代码时定义一些可变部分,那些部分在使用前必须作出指明。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型。

  2. 泛型方法 – Where约束语句 – 泛型单例【点击查看
    由于泛型类型参数可以接受任意参数类型,当我们需要提供额外的信息让编译器可以接受哪些类型,这些额外的信息叫做约束;只有符合约束的实参才能用类型参数。

  3. ArrayList数组列表 – 代码示例【点击查看
    C#为我们提供了多种强大,易用的集合类,实现了多种不同类型的集合,我们可以根据实际用途来选择适合的集合类型。

  4. List列表 – 扑克排序【点击查看
    List类是 ArrayList 类的泛型等效类。该类使用大小可按需动态增加的数组实现 IList泛型接口。

  5. Stack栈 – 中缀表达式转后缀表达式【点击查看
    栈是一种特殊的数据类型,先存储的元素最后被使用,这种操作通常称为先进后出(FILO),通常的操作只有两种,分别是入栈(压栈),出栈。两种操作的元素都在栈顶

  6. Queue队列 – 回文字符串【点击查看
    队列代表了一个先进先出的对象集合。当需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。

  7. HasTable哈希表 – 几种遍历方式【点击查看
    Hashtable类表示基于键的哈希码组织的键和值对的集合。它使用键来访问集合中的元素。哈希表中的每个项目都有一个键 / 值对;键用于访问集合中的项目。

  8. Dictinary字典 – 21点游戏【点击查看
    Dictionary泛型类提供从一组键到一组值的映射。字典中的每个添加都包含一个值及其关联的键。使用其键检索值非常快,接近 O(1),因为Dictionary & lt; TKey,TValue & gt;类是作为哈希表实现的。

  9. SrtedList & SrtedDictinary – 对比分析【点击查看
    排序列表是数组和哈希表的组合。它包含一个可使用键或索引访问各项的列表。如果您使用索引访问各项,则它是一个动态数组(ArrayList),如果您使用键访问各项,则它是一个哈希表(Hashtable)。集合中的各项总是按键值排序。

  10. Tuple元组 – 订单查询【点击查看
    Tuple 是在.NET Framework 4.0 中引入的。元组是一种数据结构,包含一系列不同数据类型的元素。它可以用于您希望拥有一个数据结构来保存具有属性的对象,但您不想为其创建单独的类型。


十,其他知识点(91~100)

  1. 预处理器指令 – 示例代码【点击查看
    处理器指令从来不会被翻译为可执行代码中的命令,但会影响编译过程的各个方面。预处理指令提供按条件跳过源文件中的节、报告错误和警告条件,以及描绘源代码的不同区域的能力。

  2. 本地数据交互 – 文件概述【点击查看
    对于计算机而言,文件往往保存在磁盘之类的外部设备中,对文件的操作常常涉及对相关文件夹的操作,操作文件和操作文件夹是程序访问文件的两个主要方面。

  3. 本地数据交互 – 读写txt文本文件【点击查看
    文件相关类,FileInfo类介绍和使用示例,Directory类介绍和使用示例;eStream,StreamReader,StreamWriter:文件流相关介绍和使用示例

  4. 本地数据交互 – 读写二进制文件【点击查看
    BinaryReader类用特定的编码将基元数据类型读作二进制值,BinaryWriter类以二进制形式将基元类型写入流,并支持用特定的编码写入字符串。

  5. 本地数据交互 – 读写pdf文件【点击查看
    操作PDF文档需要使用iTextSharp对象,它是一个开源的PDF操作类库。解决System.NotSupportedException:“No data is available for encoding 1252.报错问题,

  6. 本地数据交互 – 读写excel文件【点击查看
    微软提供了用以操作Office文档的库。如Microsoft Excel Object Library 、 Microsoft Word Object Library 、 Microsoft PowerPoint Object Library 等

  7. 线程&多线程 – 开启线程的几种方式【点击查看
    线程被定义为程序的执行路径。每个线程都定义了一个独特的控制流。

  8. 线程&多线程 – Task任务 - 模拟支付【点击查看
    C#异步多线程Task的介绍和使用,从相关关键字到使用示例,详细解析Task和TaskCompletionSource的使用方法。

  9. 特性详解 – 自定义特性【点击查看
    特性其实就是一个类,直接或间接继承自Attribute.NET预定了很多特性,我们也可以声明自定义特性。

  10. 反射详解 – 检索特性【点击查看
    反射指程序可以访问、检测和修改它本身状态或行为的一种能力。所谓的反射则是把类或方法的标签信息提取出来。


后语

完整导图分享
请添加图片描述

  • 11
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈言必行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值