C#知识大厦:一、C#知识
作者:互联网
首先写这个系列的博客的目的是为了锻炼自己的写作和表达能力,其次是为了梳理与总结4年工作中积累的知识,夯实自己的知识体系大厦。
在这里就不讲什么C#语言的其余相关基础知识了,相关的基础知识可以自行去啃书或者看相关的视频。
这里提供一下书单以及我看的一些视频与学习网址。
书单
- C#从入门到精通
- C#高级编程
- C#本质论
- 大话设计模式
- CLR via C#
- …(上述书籍入门即可,后续如何深入提升就看各位看官的了)
视频
我一般是看腾讯课堂上面的课,现在开始总结也是因为一年来对于知识的摄入量增加,需要对于自己一年来的知识进行一个梳理,机构的话大家就看上面的排行吧!!!我个人是看的软谋教育的课程,当然我非常的认可Eleven【E大】
学习网址
那这个学习网址的话,依次推荐如下
1.MSDN:这个是微软官方知识的字典库,可以多去看看
2.GitHub:很多非常强大的东西,看看大佬是怎么使用的,后续有可能的话,我也整理梳理一下Git相关的博客。
3.CSDN:毕竟在这个网站,吹一波…
1.可能在后续的博客更新中存在很多的谬误,希望各位看客老爷多多斧正!!!
2.本次【C#知识大厦】中包含的可能表达的比较青涩,也请各位看客老爷多多包涵!!!
3.其中很多知识都是在很多大佬的视频和博客中看到的,但是绝对不是使用Ctrl+C和Ctrl+V弄过来的,如果有疑问可联系我
4.值此新的一年[2020年]新春,祝各位看客老爷新年快乐,万福金安!!!
5.大家可以称呼我----小菜【对就是大话设计模式中的小菜】
6.本人是做CS开发的,并且是从事地信开发的程序,可能很多思想存在一定的行业性,大家多多讨论…
废话就不扯了,开始进入正题,我来给大家介绍我自己的C#知识大厦。
C#语言的前世今生
C#是什么,我就不发表自己的意见了,就使用C#百度百科和微软自家的解释来说C#是什么了!
1.百度百科:传送门
2.MSDN家自己的解释如下:传送门
在上述两个非常官方的解释之后我给出自己的一些总结
-
C#语言是微软公司的一门完全的面向对象的语言,其具有类型安全/强类型的特点
-
C#语言是对C++语言的进一步封装形成的新语言,其在效率上会存在一定的损耗
[观点1]传闻C#语言是微软公司为对抗Sun公司在C的基础上进一步封装形成Java语言,从而在C++的基础上进一步封装形成的C#语言
[观点2]虽然其存在效率上的损失但是其是为了更方便的解决,其效率的损失在一定程度上是可以忽略的,这个就得看一个项目的定位了,我个人认为各个语言在不同的领域有着不同的适应性。 -
C#语言对比C++、C语言具有更加方便、更加面向对象、更加拟人化的语言,
C#语言中的基础知识【if、for、类、函数之类的】就不在这里进行一个一个的梳理了。相关可以阅读书单中的[C#从入门到精通]或者学习相关的基础课程,现在腾讯课堂上的基础知识视频都是免费的,高级进阶才是需要一定费用的。
以下通过几个问题大致的介绍一些宏观上的东西。 -
C#、.Net[传统.Net不包含.Net Core]、VS三者之间的关系?
C#是一门语言,其语言可以单独存在并且运行。
.Net是一个框架集,它叫.Net Framework,开发过程中引用的初始引用都是.Net中的,程序在启动过程判断其是否为.Net环境,如果没有其环境且不安装是无法运行的。当然上述括号中也说了不包含.NetCore[下述讲到.NetCore]
VS是一个IDE,是编写C#语言的不二利器。当前使用比较多的为以下几个版本VS2010[小菜使用该版本是由于地信行业中使用ArcGIS10.1二次开发,有时不得不使用]、VS2012和10是一样的原因、VS2015是一个跨越版本、VS2017和VS2019其是目前最新的,推荐使用VS2019。在此基础上加上VS Code 其是微软在文本编辑软件上的力作,支持各类插件以及神优化。
以上是三者是什么的解释,那么语言有不同的版本、.Net也有不同的版本、VS也有不同的版本,那么它们之间的关联是什么呢?
时间节点 | VS版本 | C#语言版本 | 支持的.Net版本 |
---|---|---|---|
2002.03 | Visual Statio .NET 2002 | C#1.0 | .Net1.0 |
2003.04 | Visual Statio .NET 2003 | C#1.1 | .Net1.1 |
2005.11 | Visual Statio 2005 | C#2.0 | .Net2.0 |
2007.11 | Visual Statio 2008 | C#3.0 | 2.0/3.0/3.5 |
2010.04 | Visual Statio 2010 | C#4.0 | 2.0/3.0/3.5/4.0 |
2012.08 | Visual Statio 2012 | C#5.0 | 2.0/3.0/3.5/4.0/4.5 |
2013.10 | Visual Statio 2013 | C#5.0 | 2.0/3.0/3.5/4.0/4.5/4.5.1/4.5.2 |
2014.11 | Visual Statio 2015 | C#6.0 | 2.0/3.0/3.5/4.0/4.5/4.5.1/4.5.2 |
2017.03 | Visual Statio 2017 | C#7.0 | 2.0/3.0/3.5/4.0;4.5/1/3/5;4.6 |
2019.10 | Visual Statio 2019 | C#8.0 | 2.0/3.0/3.5/4.0;4.5/1/3/5;4.6;Core |
-
那么就引出另外的一个问题,这三个每一次升级对比上一次有哪些提升(即每一个版本的特性是什么)?
这篇博客解释的非常清楚
https://www.cnblogs.com/MingsonZheng/p/11273700.html -
C#程序在运行过程中在干什么?
首先是如下的一张图剖析了C#语言一直到最终运行它在干什么!- C#高级语言编写 由人或者机器编写为代码资源,形成逻辑信息。 - 编译器编译 有IDE进行编译(99%都是由VS进行编译)形成dll或者exe文件,其中可以说道的是会产生两个单元的文件资源一个为metaData和IL信息。如果使用臭名昭著的ILSpy进行反编译是可以查看到源代码信息的。 - 程序使用exe或其他方式调用运行时 会调用CLR/IL进行解译为计算机认识的语言01。然后交给计算机进行运行。
-
C#语言是一个面向对象的语言,面向对象语言是什么?以及与 C、C++、Java、Python语言之间的爱恨情仇?
这个里面可以相互分组,C与C++一组,Java与C#一组,Python单为一组。
C和C++语言均为"底层"语言,其具有效率高但使用复杂,指针暴露等特点,相交其他三门语言程序运行效率高,同时编写难度大。
C语言是面向过程的语言
其优点如下:
编译速度,执行效率是5者中最高的;
学习简单,只要英语能力不扯后腿其学习速度非常快;
其劣势如下:
其为面向过程语言,对于大型项目可维护以及可拓展能力相交弱
垃圾回收需要程序员自行释放
C++语言是在C语言的基础上演变而来,是半面向对象语言
其有点如下:
(1)代码可读性好。
(2)可重用性好。
(3)可移植。
(4)C++设计成无需复杂的程序设计环境
(5)运行效率高,高效安全
(6)语言简洁,编写风格自由。
(7)提供了标准库stl
(8)面向对象机制
(9)由于其由C语言发展而来,故其可以完全兼容C语言
其劣势如下:
学习难度是5门语言中最为困难的。
和C语言一样需要自行释放资源,没有垃圾回收机制,可能引起内存设漏;
Python语言这几年的势头非常的好,其当前是热更新、人工智能、机器学习的不二选择。
Java与C#语言其有80%的内容相同,其不同的地方主要体现在高级技术方面。
1.C#语言在2.0之后提出泛型的概念,Java语言随后提出,然而C#语言的泛型是真泛型,Java语言的泛型是编译器使用Object和类实现的模式。随后C#在泛型的基础上提出Lambda表达式等。
2.Java语言的跨平台性比C#的跨平台性强,C#(暂时不包含.NetCore)当前的跨平台性不是很成熟,需要依赖.Net框架环境。
3.Java是BS开发的王者,C#是窗体应用程序开发的不二选择。
4.Java语言开源,拥有者世界上所有的Javer开发者对其进行维护升级以及建议。故其发展以及语言生态环境由于C#。而C#语言是微软闭源开发的,其用其专业开发团队来维护语言,故本人认为在语言的优雅性以及纯洁性上优于其他语言。
以上我并不是某种语言的簇拥也不是某种语言的打压。
标签:语言,C#,知识,大厦,Visual,Statio,Net,2.0 来源: https://blog.csdn.net/a13407142317/article/details/104076183