pp看书笔记---C#高级编程第九版 第一章 【.NET环境】

作者分享了从基础知识到新技术的学习过程,强调了实践与理解的重要性。文章深入探讨了.NET与C#的关系,解释了CLR、IL、CTS、CLS等关键概念,并详细阐述了.NET平台的优势。此外,文章还讨论了语言互操作性、数据类型化以及垃圾回收机制(GC)的作用。通过对比C++,文章突出了.NET在灵活性、性能和安全性方面的特点。

前言

本身很渣,基础不牢、不行,攀爬新技术,新技术更迭还是基础的东西,买了本第九版的书,到现在永远看不过第四章,成天想着张工资,大公司,代码没有结构

之前别人问我怎么学,看哪本书,我都推荐不要看书,认为书是知识的堆积,不管你会不会,反正都堆积在那里一大坨,现在我需要的就是这些

既然这样,重新开始,忘掉之前的,不知道怎么忘,拾起书来,看,看的时候用自己的话去阐述,看完一章看章节目录,看能记得起来了的,写笔记,写自己理解的,只写自己理解的,我还年轻,干

昨晚CCTV6放《夺标》,张之江说“一艺精,百艺通”,何尝不是,校园时代用java开发过愤怒的小鸟,C++用了半年,用C#用了近一年,然后呢?有个卵用,没有一样说自己精,玩得来的,说自己会哪种语言,都心里没底,想想,只要会个for会个if懂点数据类型和基础数据结构的人,完全可以替代我

因为是读书笔记,里面会掺杂很多个人感情和言论,看到的人还希望能给予正解。
——————————————————————2015-11-29

问题

  • .NET和C#的关系
  • .NET的核心结构图
  • IL、CLR、CTS、CLS分别是什么,干什么
  • .NET的优点
  • GC的机制

.NET和C#的关系

1.依赖
语言单独存在没有意义,平台放在那里没有语言也是摆设。

C#是一种开发语言,像一个满腹经纶的才子,.NET是个平台,像朝廷,这个才子想为人民施展抱负,需要借助朝廷才能名正言顺的做事。

2.做事
C#在.NET上,其很多内容必然是.NET本质的一些映射。

才子当上了官,结合当前朝廷的律法做事,不能干出格,那才子的所作所为实际也是当前朝廷做事方法的一些映射。

3.特性
C#有.NET没有的特性,.NET有C#没有的特性。

才子擅长内政不会领兵,朝廷就再去招募会打仗的。
才子私下喜爱古董,朝廷肯定不会说支持(但也不反对)。

.NET的核心结构图

这里写图片描述

IL、CLR、CTS、CLS分别是什么,干什么

CLR :公共语言运行时
他的核心包括CTS、CLS

IL:是一种中间语言,低级语言,数字语言
CLR是.NET平台的核心,CLR将在.NET支持的开发语言翻译成IL

我们在一想,.NET支持的不同开发语言都变成一种语言IL,那不就可以互相协作了?不同人种说同一种语言,不就是地球村了。

CTS:通用系统类型
开发语言之间数据类型的翻译官

中国人和外国人聊天,外国人想尿尿,说马桶在哪里,中国人听懂了他说马桶在哪里,但是那个年代中国没有马桶,翻译官说他在找夜壶

.NET支持C#和VB,同样是System.Int32类型,C#中叫Int,VB中叫Inte什么什么的,都是同一个东西

CLS:共用语言规范
开发语言之间语法的翻译官

中国人和外国人聊天,外国人说BANK OF CHINA,中国人翻译过来是银行中国

.NET的优点

1.平台无关性

.NET把代码都先翻译成中间语言IL,我买了个Android手机,就把IL放进去按Android的规则编译,我攒够钱了买了个Plus,我就把IL用IOS的规则编译,本来是个桌面程序,我想开发网站了,在按网站的规则来一遍,反正我这个程序的代码没有变

2.性能提高

1.我写了50万行代码,运行的时候肯定需要编译,.NET是即使编译,用到了哪里编译哪里,我点了这个按钮,这个按钮操作的代码才去编译,这肯定比一运行就编译50万行快的太多了,否则我多调试几次还不得疯了。

2.我写了一堆代码,第一次运行开始编译,o,有错,我改错,第二次运行编译,.NET将编译过的代码保存在本地,下次运行判断有没有改过,没有改过就不再去重新编译,那第二次编译的时候肯定比第一次快。

3..NET会去判断运行的机器是什么类型的机器,去优化(这一点我没有去做更多的查询)

3.语言互操作性

.NET好比地球,将自己支持的语言比作不同的人种,他真的想变成地球村,黑人和白人说话都能互相听懂,那到了程序里就是C#和VB的代码可以互相调用、引用、继承,当做是同一种语言来用,因为有了IL,因为有了CLR,因为有了CTS和CLS

而且Visual Stduio还成功的做到了,多种语言协作的时候,一会调试VB代码,一会调试C#代码这种的方法

4.数据类型化
.NET要求使用的数据,必须给他数据类型,例如int\bool或者其他等等

坏处:不如C++那样数据类型直接通过指针可以随意的转换,变得不灵活,降低了性能

好处:1.方便语言互操作性:上面说了语言互操作性这个地球村,那我C#写的一个变量a转成VB,那你起码要知道a是什么类型吧,要不你怎么知道转成什么?

2.提高安全性:我用过C++,指针强转数据类型搞不好很容易出错

3.利于删除:.NET用的是GC垃圾回收,内存释放绝大部分情况下都不用我们开发人员去关心,你想啊,不同类型的数据回收的方式肯定有差别,你给他明确了数据类型,GC判断一下,就知道该怎么回收

GC的机制

1.手动
这没啥说的,开发人员调用API来主动释放掉,但用的及其少,不像C++一样,要自己delete

2.内存地址引用计数
说深了我也不懂,涉及到池,说浅了就是:

对象引用在内存肯定还是只存了一份,你不知道其他人有没有在用这个对象,所以不能自己用完了就去释放,所以当你引用的时候会有个Count计数,0,1,2这样的数字,GC定时检查这个对象没用了计数减减,最后为0了,才真正的释放掉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值