C#知识大厦:一、C#知识

首先写这个系列的博客的目的是为了锻炼自己的写作和表达能力,其次是为了梳理与总结4年工作中积累的知识,夯实自己的知识体系大厦。
在这里就不讲什么C#语言的其余相关基础知识了,相关的基础知识可以自行去啃书或者看相关的视频。


这里提供一下书单以及我看的一些视频与学习网址。

书单

  1. C#从入门到精通
  2. C#高级编程
  3. C#本质论
  4. 大话设计模式
  5. CLR via C#
  6. …(上述书籍入门即可,后续如何深入提升就看各位看官的了)

视频

我一般是看腾讯课堂上面的课,现在开始总结也是因为一年来对于知识的摄入量增加,需要对于自己一年来的知识进行一个梳理,机构的话大家就看上面的排行吧!!!我个人是看的软谋教育的课程,当然我非常的认可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#语言是微软闭源开发的,其用其专业开发团队来维护语言,故本人认为在语言的优雅性以及纯洁性上优于其他语言。
    以上我并不是某种语言的簇拥也不是某种语言的打压。

发布了1 篇原创文章 · 获赞 0 · 访问量 44

猜你喜欢

转载自blog.csdn.net/a13407142317/article/details/104076183