
|
课程培训
|
C#培训课程
C#培训课程大纲
培训对象:
培训目标:
培训内容介绍:
一、.NET平台与C#概述 (1).NET平台简介:.NET Framework、.NET Core与.NET 5/6/7/8的演进关系;.NET作为开发平台的核心优势(多语言支持/统一类库/自动内存管理);CLR(公共语言运行时)的作用;FCL(框架类库)概览。 (2)C#语言定位:C#作为.NET原生语言的设计哲学;C#的应用领域(桌面应用/Web开发/游戏开发/移动开发/云应用);C#语言的版本演进与特性更新。 (3)开发环境搭建:Visual Studio Community 2022安装与配置;.NET SDK的安装与验证;创建第一个C#控制台应用程序;项目结构解析(Program.cs/命名空间/类/Main方法)。 (4)编译与执行:C#源代码到机器码的编译过程(C#→IL→机器码);JIT即时编译与AOT预先编译的对比;IL代码查看工具(ILDasm)的使用。
二、C#基础语法 (1)程序结构:C#程序的基本组成(命名空间/类/方法/语句);Main方法的作用与签名;代码注释规范(单行注释/多行注释/XML文档注释)。 (2)标识符与关键字:标识符命名规则(字母/数字/下划线);C#关键字列表(abstract/class/if/for等);上下文关键字(get/set/var等)。 (3)语句与表达式:语句的基本形式;表达式的构成与求值;运算符优先级与结合性。 (4)控制台输入输出:Console.WriteLine与Console.Write的输出格式;Console.ReadLine的输入读取;格式化字符串(占位符/插值字符串)。
三、数据类型与变量 (1)值类型与引用类型:值类型与引用类型的核心区别(栈与堆的内存分配);值类型的复制行为;引用类型的引用传递;装箱与拆箱的性能影响。 (2)内置值类型:整型(sbyte/byte/short/ushort/int/uint/long/ulong);浮点型(float/double);十进制类型(decimal)的高精度应用;布尔类型(bool);字符类型(char)。 (3)内置引用类型:字符串类型(string)的不可变性;对象类型(object)作为所有类型的基类;dynamic类型的动态特性。 (4)变量声明与初始化:变量声明语法(数据类型 变量名);隐式类型变量(var)的适用场景;变量的默认值;常量(const)与只读字段(readonly)的区别。 (5)类型转换:隐式转换的安全规则;显式转换(强制转换)的风险;Convert类的类型转换方法;Parse/TryParse方法的字符串转换。
四、运算符与表达式 (1)算术运算符:加法(+)、减法(-)、乘法(*)、除法(/)、取余(%);自增(++)与自减(--)的前置与后置区别。 (2)关系运算符:相等(==)、不等(!=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=);关系运算的布尔结果。 (3)逻辑运算符:逻辑与(&&)、逻辑或(||)、逻辑非(!);短路求值特性;位逻辑运算符(&/|/^/~)的应用。 (4)赋值运算符:简单赋值(=);复合赋值(+=/-=/*=//=等);赋值表达式的返回值。 (5)其他运算符:条件运算符(?:)简化if-else;null合并运算符(??)处理可空类型;null条件运算符(?.)的安全访问;typeof运算符获取类型信息;sizeof运算符获取大小。 (6)运算符优先级:完整优先级表;使用括号改变优先级。 * *五、流程控制 (1)选择结构:if-else if-else多条件判断的语法与逻辑;嵌套if语句的注意事项;switch语句的传统用法;switch表达式的模式匹配增强(C# 7.0+);switch表达式的返回值。 (2)循环结构:for循环的四个组成部分(初始化/条件/迭代/循环体);for循环的变体(省略部分/无限循环);while循环的先判断后执行;do-while循环的先执行后判断;foreach循环遍历可枚举集合。 (3)跳转语句:break退出循环或switch;continue跳过本次循环剩余语句;return退出方法并返回值;goto的谨慎使用;throw抛出异常。 (4)循环应用实战:遍历数组元素;嵌套循环打印图形;循环与条件结合实现复杂逻辑。
**六、数组与集合 (1)一维数组:数组的声明(int[] arr);数组的创建(new int[5]);数组初始化器(int[] arr = {1,2,3});数组元素的访问与修改;数组的遍历(for/foreach);数组的常用属性和方法(Length/GetLength/CopyTo/Clone)。 (2)多维数组:二维数组的声明(int[,] matrix);二维数组的创建与初始化;二维数组的访问(matrix[i,j]);多维数组的遍历;交错数组(int[][] jagged)的声明与使用。 (3)数组高级操作:Array类的静态方法(Sort/Reverse/IndexOf/Find);数组的复制与克隆;数组与ArrayList的转换。 (4)集合概述:System.Collections命名空间的非泛型集合(ArrayList/Hashtable/Queue/Stack);泛型集合的优势(类型安全/性能)。 (5)泛型集合:List<T>列表的增删改查;Dictionary<TKey,TValue>字典的键值对存储;HashSet<T>的唯一性集合;Queue<T>与Stack<T>的队列与栈操作;LinkedList<T>双向链表。 (6)集合迭代:IEnumerable与IEnumerator接口;foreach的底层实现;yield return与yield break实现自定义迭代器。 * *七、面向对象编程基础 (1)类与对象:类的定义(class关键字);字段(Field)存储数据;属性(Property)封装字段访问(get/set访问器);自动实现属性;方法(Method)定义行为;构造函数(Constructor)初始化对象;析构函数(Destructor)的资源释放。 (2)对象的创建与生命周期:new关键字创建对象;对象在托管堆上的分配;垃圾回收(GC)的自动内存管理;对象引用与对象实例的区别。 (3)访问修饰符:public(任何地方可访问);private(仅类内部);protected(类及其派生类);internal(同一程序集);protected internal(程序集或派生类);private protected(程序集内派生类)。 (4)静态成员:静态字段与静态属性的类级别共享;静态方法的调用;静态构造函数的一次性初始化;静态类的特性与限制。 (5)this关键字:引用当前实例;区分字段与参数;调用其他构造函数(this());索引器中的使用。 (6)对象初始化器与匿名类型:对象初始化器语法(new Person { Name="Tom", Age=20 });匿名类型(var person = new { Name="Tom", Age=20 })的只读特性。 ** 八、面向对象编程进阶 (1)继承:派生类的定义(class Student : Person);base关键字调用基类成员;基类构造函数调用顺序;方法重写(override)与隐藏(new);密封类(sealed)阻止继承;抽象类(abstract)作为基类。 (2)多态:编译时多态(方法重载Overload);运行时多态(虚方法Virtual/重写Override);里氏替换原则(LSP)的理解;多态在实际开发中的应用。 (3)抽象类与抽象方法:抽象类不能实例化;抽象方法只有声明没有实现;派生类必须实现抽象方法;抽象属性与抽象索引器。 (4)接口:接口的定义(interface IComparable);接口成员的隐式实现与显式实现;接口的多重继承;接口的默认实现方法(C# 8.0+);抽象类与接口的选择策略。 (5)密封类与密封方法:密封类防止继承(sealed class);密封方法阻止派生类继续重写。 (6)分部类与分部方法:分部类(partial class)跨文件定义;分部方法的声明与实现分离;分部方法必须返回void。 (7)记录类型(Record):记录(record)的不可变特性;值相等性(Value Equality);with表达式创建修改副本;位置记录(positional record)的简化语法。 ** 九、委托与事件 (1)委托的概念:委托作为方法引用的类型安全对象;委托的类型声明(delegate void MyDel(int x));委托的实例化(new MyDel(MethodName));委托的调用(委托实例(参数))。 (2)多播委托:使用+=添加多个方法;使用-=移除方法;多播委托的返回值(最后一个方法的返回值);多播委托的异常处理。 (3)内置委托类型:Action<T>无返回值委托;Func<T,TResult>有返回值委托;Predicate<T>返回bool的委托;Comparison<T>比较委托。 (4)匿名方法与Lambda表达式:匿名方法的语法(delegate(参数){...});Lambda表达式的演进(参数=>表达式);Lambda在LINQ中的应用;闭包(Closure)与变量捕获。 (5)事件基础:事件作为委托的封装;事件的声明(event EventHandler MyEvent);事件发布者与订阅者的角色;事件的+=订阅与-=取消订阅。 (6)标准事件模式:EventHandler委托与EventArgs基类;自定义事件参数(继承EventArgs);触发事件的保护方法(OnEventName)。 (7)事件的应用:UI控件的事件处理;观察者模式的实现;松耦合的组件通信。 * *十、泛型 (1)泛型概述:泛型解决代码复用与类型安全的矛盾;泛型类型参数(T)的声明;泛型类(List<T>)、泛型方法、泛型接口、泛型委托。 (2)泛型类与泛型方法:泛型类的定义与实例化;泛型方法的定义与类型推断;泛型中的静态成员。 (3)泛型约束:where T : struct(值类型约束);where T : class(引用类型约束);where T : new()(无参构造函数约束);where T : 基类名(继承约束);where T : 接口名(接口约束);where T : U(裸类型约束)。 (4)泛型接口与泛型委托:IComparable<T>与IEquatable<T>泛型接口;Action<T>与Func<T,TResult>泛型委托。 (5)协变与逆变:协变(out)允许派生类型作为返回值;逆变(in)允许基类型作为参数;IEnumerable<out T>的协变;IComparable<in T>的逆变。 (6)泛型在集合中的应用:List<T>、Dictionary<TKey,TValue>、Queue<T>、Stack<T>的源码分析;泛型集合的性能优势。 * *十一、异常处理 (1)异常处理机制:try块包含可能出错的代码;catch块捕获并处理特定异常;finally块确保资源释放;throw语句抛出异常。 (2)异常类体系:System.Exception作为所有异常的基类;SystemException与ApplicationException;常用异常类型(ArgumentNullException/IndexOutOfRangeException/InvalidOperationException等)。 (3)自定义异常:继承Exception类;定义异常构造函数;添加自定义属性;保持异常的可序列化。 (4)异常处理最佳实践:捕获特定异常而非基类异常;避免空的catch块;在适当的层级处理异常;使用finally释放资源;使用using语句简化资源管理。 (5)异常传播与堆栈跟踪:异常的向上传播机制;堆栈跟踪(StackTrace)的解读;内部异常(InnerException)的链式传递。 ** 十二、文件I/O与序列化 (1)System.IO命名空间:File、Directory、Path等静态类的使用;FileInfo、DirectoryInfo实例类的使用;文件与目录的创建、删除、移动、复制。 (2)文件读写:FileStream的字节级操作;StreamReader/StreamWriter的文本读写;BinaryReader/BinaryWriter的二进制读写;StreamReader的ReadLine与ReadToEnd方法。 (3)异步文件操作:ReadAsync/WriteAsync方法;async/await在文件I/O中的应用;大文件的分块读写。 (4)序列化概述:序列化将对象转换为可存储/传输的格式;反序列化还原对象;序列化的应用场景(持久化/远程通信/深拷贝)。 (5)JSON序列化:System.Text.Json命名空间;JsonSerializer.Serialize与Deserialize;JsonSerializerOptions的配置;Newtonsoft.Json的对比使用。 (6)XML序列化:XmlSerializer类的使用;控制序列化的属性(XmlElement/XmlAttribute/XmlIgnore);XML文档的读写。 ** 十三、LINQ与集合操作 (1)LINQ概述:LINQ(语言集成查询)的核心理念;LINQ的三要素(数据源/查询/执行);延迟执行与即时执行的区别。 (2)LINQ查询语法:from子句指定数据源;where子句条件筛选;select子句投影结果;orderby子句排序(ascending/descending);group by子句分组;join子句连接数据源;let子句引入临时变量。 (3)LINQ方法语法:Where/Select/OrderBy/GroupBy/Join等扩展方法;Lambda表达式在方法语法中的应用;方法链的串联。 (4)LINQ to Objects:内存中集合的LINQ查询;聚合函数(Count/Sum/Average/Min/Max);元素操作(First/Last/Single/ElementAt);集合操作(Distinct/Union/Intersect/Except)。 (5)LINQ性能考虑:延迟执行的优势与陷阱;立即执行的方法(ToList/ToArray/ToDictionary);查询的多次执行问题。 ** 十四、异步编程 (1)异步编程基础:同步编程的阻塞问题;异步编程提高响应性;任务并行库(TPL)的引入。 (2)Task与Task<TResult>:创建Task(Task.Run);等待任务完成(Wait/WaitAll/WaitAny);获取任务结果(Result属性);任务的延续(ContinueWith)。 (3)async/await关键字:异步方法定义(async关键字);await等待任务完成;await的编译转换(状态机);异步方法返回类型(Task/Task<T>/void)。 (4)异步编程最佳实践:避免async void(除事件处理外);使用ConfigureAwait(false)避免上下文捕获;并行任务的组合(Task.WhenAll/WhenAny);取消令牌(CancellationToken)的使用。 (5)异步流(Async Streams):IAsyncEnumerable<T>接口;await foreach的异步迭代;异步流的生产与消费。 ** 十五、反射与特性 (1)反射概述:反射(Reflection)在运行时检查类型信息;System.Type类获取类型信息;Assembly类加载程序集;反射的应用场景(插件架构/ORM框架/依赖注入)。 (2)Type类:获取Type的多种方式(typeof/GetType);Type的属性(Name/FullName/Assembly/BaseType);Type的方法(GetMethods/GetProperties/GetFields)。 (3)动态创建对象:Activator.CreateInstance创建实例;ConstructorInfo.Invoke调用构造函数;反射调用方法(MethodInfo.Invoke);反射访问字段与属性。 (4)特性(Attribute)基础:特性的概念(向程序添加元数据);预定义特性(Obsolete/Serializable/Conditional);自定义特性的定义(继承Attribute类)。 (5)反射读取特性:GetCustomAttributes方法;特性的应用场景(验证/日志/权限控制);特性与AOP(面向方面编程)的结合。 ** 十六、综合实战项目 (1)项目一:学生成绩管理系统:需求分析与类设计(Student/Class/Course);控制台菜单界面实现;增删改查功能开发(List<T>存储);成绩统计(平均分/最高分/不及格统计);数据持久化(JSON序列化保存到文件)。 (2)项目二:图书馆管理系统:图书类与读者类设计;图书借阅与归还功能;LINQ查询(按作者/按类别/按书名搜索);借阅逾期计算与罚款;多线程模拟并发借阅。 (3)项目三:简易记事本应用:文本文件的打开与保存;文本编辑功能(复制/粘贴/剪切/查找/替换);打印预览与打印;多文档界面(MDI)支持。
如果您想学习本课程,请预约报名
如果没找到合适的课程或有特殊培训需求,请订制培训 除培训外,同时提供相关技术咨询与技术支持服务,有需求请发需求表到邮箱soft@info-soft.cn,或致电4007991916 技术服务需求表点击在线申请 服务特点: 海量专家资源,精准匹配相关行业,相关项目专家,针对实际需求,顾问式咨询,互动式授课,案例教学,小班授课,实际项目演示,快捷高效,省时省力省钱。 专家力量: 中国科学院软件研究所,计算研究所高级研究人员 oracle,微软,vmware,MSC,Ansys,candence,Altium,达索等大型公司高级工程师,项目经理,技术支持专家 中科信软培训中心,资深专家或讲师 大多名牌大学,硕士以上学历,相关技术专业,理论素养丰富 多年实际项目经历,大型项目实战案例,热情,乐于技术分享 针对客户实际需求,案例教学,互动式沟通,学有所获 |
|