DotNet进阶篇

一. 回顾历史

   回顾个人发展历程,自2012年初次接触开发至今(2018年)已经有五六个年头,这期间陆陆续续学习并掌握了不少技术,C#语言、ORM框架、多线程技术、设计模式、前端技术、MVC、MVVM框架思想等等,每种技术随着多次使用,随着不断的反思,逐渐经历 “了解→理解→掌握→精通 ”这么一个过程,从最初的只能实现功能到如今的“每一步都考虑性能优化问题”,在近两年内,开始写博客,最初只是一时兴起,想让百度上能搜索出我的文章,但现在已经形成一个习惯,在没有特殊事情耽搁的情况下,坚持一周两篇博客,到目前为止,有效文章数已经达到140多篇,当然后面还会陆续写下去。

  作为理科生出身的我,没有华丽的辞藻 ,没有煽情篇章,话不多说,回顾完个人开发历程,下面看一下C#和.Net的发展历程,再次补充一点,.Net不是一门开发语言,而C#才是基于.Net运行环境下的一种高级开发语言。

  

  从上面的表格可以看出来,C#这么语言至今已经接近20年历史了,从2002年诞生的那一刻起,不断更新,不断改进,功能越来越强大,越来越方便程序们的开发,当然.NET类库、CLR、以及开发神器Visual Studio也在不端更新。(VS 2017 宇宙第一开发神器 这个应该毫无争议吧

  之前曾说过,C#仅仅是.Net下的一门开发语言而已,.Net生态远远不止如此。

  

  我们以前提到.Net,指的都是.Net FrameWork,经常被java程序员嘲笑,.Net不能跨平台,但现在不会来,他们可以闭嘴了,.Net Core就是为跨平台而生,下面简单总结一下.Net生态。

  (1) 语言有:C# 、F#、VB

  (2) C/S程序开发技术有:WinForm、WPF

  (3) B/S程序开发技术有:ASP.Net WebForm 、ASP.Net MVC、Core MVC

  (4) 通讯技术有:WebAPI、WCF、SignalR

  (5) 日志框架有:Log4Net

  (6) 数据库访问技术有:ADO.NET 、EF

  这里不再继续列举了,也没有必要再列举了,因为对于新时代合格的工程师而言,没有人限制你只能掌握一种技术,任何一个大型的信息系统,都是有多种技术组合而来,在现在一个大一统的时代,连.Net的生身父母“微软”都开源了,难道小小的你还能故步自封吗?

二. 扫盲C#运行原理

   C#作为一门高级语言,机器是不认识的,那么它是怎么编译成让机器码让机器识别呢,一张图胜似千言万语,请看下图。

  概念补充:

    CTS:C#、F#、VB都必须遵守的通用类型

    CLS:通用语言规范(CLS是CTS的一个子集)

    BCL:基础类库

  总结:C#是一种面向对象的高级编程语言,符合CLR中的CLS(通用语言规范)

  .Net Framework包含三部分:

    1 CLR

    2 编程工具

    3 BCL(基类库)

三. 基础进阶系列及章节详细介绍

   最近一直在考虑初学者学习.Net应该从哪学起,上面说的天花乱坠,有什么用呢? 如果连.Net最基础的知识都掌握不了,还谈什么开发呢?

  这里结合我自己的理解,整理出一条较为合适的路线,并对之前的博客重新排版重新改写,形成这个【DotNet进阶篇】系列,一方面方便自己日后复习,另一方面也为.Net社区尽一点绵薄之力。

  

   第一节:从面向对象思想(oo)开发、接口、抽象类以及二者比较 

   第二节:重写(new)、覆写(overwrite)、和重载(overload)

   第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字

   第四节:IO、序列化和反序列化、加密解密技术

   第五节:泛型(泛型类、接口、方法、委托、泛型约束、泛型缓存、逆变和协变)

   第六节:反射(几种写法、好处和弊端、利用反射实现IOC)

   第七节:语法总结(1)(自动属性、out参数、对象初始化器、var和dynamic等)

   第八节:语法总结(2)(匿名类、匿名方法、扩展方法)

   第九节:委托和事件(1)(委托的发展历史、插件式编程、多播委托)

   第十节:委托和事件(2)(泛型委托、Func和Action、事件及与委托的比较)

   第十一节:特性(常见的特性标签、自定义特性、特性的使用案例)

   第十二节:Lambda、linq、SQL的相爱相杀(1)

   第十三节:Lambda、linq、SQL的相爱相杀(2)

   第十四节:Lambda、linq、SQL的相爱相杀(3)

   第十五节:Expression表达式目录树(与委托的区别、自行拼接、总结几类实例间的拷贝)

   第十六节:语法总结(3)(C#6.0和C#7.0新语法)

   第十七节:易混淆的概念(拆箱和装箱、值传递和引用传递、深拷贝和浅拷贝)(未完成)

   第十八节:跨域请求(未完成)

   第十九节:CLR核心机制(未完成)

   第二十节:正则表达式(未完成)

   第二十一节:ADO.NET的使用(未完成)

   第二十二节:XXXXXXXXXXXXXXXXXXXXXXXX

   第二十三节:XXXXXXXXXXXXXXXXXXXXXXXX

 截止 6月3日,完成以上章节的 博客改版。

猜你喜欢

转载自www.cnblogs.com/yaopengfei/p/8853590.html