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(windows), .net core的clr支持(windows、linux、macos)
2 开发工具包
3 BCL(基础类库)
三. 基础进阶系列及章节详细介绍
最近一直在考虑初学者学习.Net应该从哪学起,上面说的天花乱坠,有什么用呢? 如果连.Net最基础的知识都掌握不了,还谈什么开发呢?
这里结合我自己的理解,整理出一条较为合适的路线,并对之前的博客重新排版重新改写,形成这个【DotNet进阶篇】系列,一方面方便自己日后复习,另一方面也为.Net社区尽一点绵薄之力。
第一节:从面向对象思想(oo)开发、接口、抽象类以及二者比较
第二节:重写(new)、覆写(overwrite)、和重载(overload)
第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字
第五节:泛型(泛型类、接口、方法、委托、泛型约束、泛型缓存、逆变和协变)
第七节:语法总结(1)(自动属性、out参数、对象初始化器、var和dynamic等)
第九节:委托和事件(1)(委托的发展历史、插件式编程、多播委托)
第十节:委托和事件(2)(泛型委托、Func和Action、事件及与委托的比较)
第十一节:特性(常见的特性标签、自定义特性、特性的使用案例)
第十五节:Expression表达式目录树(与委托的区别、自行拼接、总结几类实例间的拷贝)
第十七节:易混淆的概念(静态和非静态、拆箱和装箱、值传递和引用传递、深拷贝和浅拷贝)(持续更新)
第二十二节:XXXXXXXXXXXXXXXXXXXXXXXX
第二十三节:XXXXXXXXXXXXXXXXXXXXXXXX
!
- 作 者 : Yaopengfei(姚鹏飞)
- 博客地址 : http://www.cnblogs.com/yaopengfei/
- 声 明1 : 本人才疏学浅,用郭德纲的话说“我是一个小学生”,如有错误,欢迎讨论,请勿谩骂^_^。
- 声 明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。
DotNet进阶系列的更多相关文章
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- dotnet学习系列
这里整理下之前关于dotnet方面的文章索引. 一.dotnet core 系列 dotnet core 微服务教程 asp.net core 系列之并发冲突 asp.net core 系列之中间件进 ...
- C#进阶系列——WebApi 接口返回值不困惑:返回值类型详解
前言:已经有一个月没写点什么了,感觉心里空落落的.今天再来篇干货,想要学习Webapi的园友们速速动起来,跟着博主一起来学习吧.之前分享过一篇 C#进阶系列——WebApi接口传参不再困惑:传参详解 ...
- C#进阶系列——WebApi 接口参数不再困惑:传参详解
前言:还记得刚使用WebApi那会儿,被它的传参机制折腾了好久,查阅了半天资料.如今,使用WebApi也有段时间了,今天就记录下API接口传参的一些方式方法,算是一个笔记,也希望能帮初学者少走弯路.本 ...
- C#进阶系列——WebApi 接口测试工具:WebApiTestClient
前言:这两天在整WebApi的服务,由于调用方是Android客户端,Android开发人员也不懂C#语法,API里面的接口也不能直接给他们看,没办法,只有整个详细一点的文档呗.由于接口个数有点多,每 ...
- C#进阶系列——WebApi 跨域问题解决方案:CORS
前言:上篇总结了下WebApi的接口测试工具的使用,这篇接着来看看WebAPI的另一个常见问题:跨域问题.本篇主要从实例的角度分享下CORS解决跨域问题一些细节. WebApi系列文章 C#进阶系列— ...
- C#进阶系列——WebApi 身份认证解决方案:Basic基础认证
前言:最近,讨论到数据库安全的问题,于是就引出了WebApi服务没有加任何验证的问题.也就是说,任何人只要知道了接口的url,都能够模拟http请求去访问我们的服务接口,从而去增删改查数据库,这后果想 ...
- C#进阶系列——WebApi 异常处理解决方案
前言:上篇C#进阶系列——WebApi接口传参不再困惑:传参详解介绍了WebApi参数的传递,这篇来看看WebApi里面异常的处理.关于异常处理,作为程序员的我们肯定不陌生,记得在介绍 AOP 的时候 ...
- C#进阶系列——WebApi 路由机制剖析:你准备好了吗?
前言:从MVC到WebApi,路由机制一直是伴随着这些技术的一个重要组成部分. 它可以很简单:如果你仅仅只需要会用一些简单的路由,如/Home/Index,那么你只需要配置一个默认路由就能简单搞定: ...
随机推荐
- pipe size设置
我所用的软件架构,使用pipe来实现线程之间的大量数据的传输.在实际操作中,pipe中传输的是数据的指针,而不是数据本身. 但是在调试过程中,我发现,如果我尝试往pipe里面write10000个指 ...
- NT路径,DOS路径和Device路径互相转换
项目中遇到的比较奇葩的问题,从网上找到一份源码,https://blog.csdn.net/qq125096885/article/details/70766206 稍微整理了下,VS可以直接编译 # ...
- 记录display:table的使用
兼容性:不兼容IE7 1.左右对齐 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- 《重构》的读书笔记–方法列表
第5章 重构列表 5.1 重构的记录格式103 5.2 寻找引用点105 5.3 这些重构手法有多成熟106 第6章 重新组织函数 6.1 (P110)Extract Method(提炼函数) 6.2 ...
- 宝塔服务器面板 部署 thinkphp5 坑
thinkphp5 在宝塔服务器上部署,出现的问题: 1. File not found. 原因: 宝塔服务器默认不支持 pathinfo 的路径访问:需要在软件 - PHP - 管理里面,安装php ...
- 【es6】数组排重
let set = new Set([1,2,3,4,4,4,4,4]); console.log( Array.from(set) ); //输出:[ 1, 2, 3, 4 ]
- [原创]基于SpringAOP开发的方法调用链分析框架
新人熟悉项目必备工具!基于SpringAOP开发的一款方法调用链分析插件,简单到只需要一个注解,异步非阻塞,完美嵌入Spring Cloud.Dubbo项目!再也不用担心搞不懂项目! 很多新人进入一家 ...
- js循环获取table中的值
<script type="text/javascript"> function getTdValue() { var tableId = document.getEl ...
- Nginx 在线新增模块
系统:Centos7.5 Nginx版本:1.12.2 今天给项目添加ssl证书时,发现nginx 竟然不支持ssl,经过查看,询问相关人员发现nginx编译的时候没有任何模块(历史原因).哎.... ...
- 微信支付之01------获取订单微信支付二维码的接口------Java实现
[ 前言:以前写过一个获取微信二维码支付的接口,发现最近公司新开的项目会经常用到,现在我又翻出代码看了一遍,觉得还是把整个代码流程记下来的好 ] 借鉴博客: 他这篇博客写得不错,挺全的:https:/ ...