一文搞清到底什么是 NET
其实几句话就能搞清楚.net。
我们知道我们使用C#/VB写的代码是源码,如果这个源码你写在记事本中也是一样的。
然后使用csc.exe/vbc.exe把你的源码编译。生成的文件就是IL文件(可能为dll或exe后缀的)。
事实上,我们如果在记事本写是一样的,这个记事本叫编辑器,你需要一句句地把代码写出来。如果我们记事本象notepad+一样能带一个高亮语法的标识多好?当然了,如果能有自动补全更好(一个关键词或声明的变量之类的,打出几个字母就提示出来,我们可以提高输入速度的,录入速度与打字速度这里有区别了,很多程序员以为自己输入速度很高,进而以为自己的打字速度很高,其实不是我经常说程序打字速度并不快不需要机械键盘就是因为这个,并不是说输入速度低),这些功能都加上,就是VS(vs其实是一个IDE,开发集成工具,而编辑器就是其中一个,智能感智——自动补全功能加强版,高亮显示等都是编辑器的插件被集成进来),而模板(自动给你增加using代码与部分文件名称等等)则是把常用的一些句子先给你输入好,等等集合起来,就把编辑这部分完成了。
当然了,你安装完之后会看到类似于csc.exe与vbc.exe这类的编译器的,它可以把你的源码(文本)编译成IL语言。不幸的是csc/vbc的参数太多了,输出输入选项等等,谁也记不住啊,所以根据文本组织,自动生成一个csc参数使用的命令多好?嗯,想法不错的,这就是VS中另一个功能,他所谓有的编译F6等等都是按你的项目组织自动生成一条编译指令来调用编译器(csc编译c#的,vbc编译vb的),VS不但可以自已选择合适的编译器(根据后缀名),而且对于项目中某个参数,自动调用csc.
好了,怎么把源码变成IL呢?这里要用到一个东西,我们叫.net framework,不要把framework理解成模板,不要以为你选择.net framework版本之后可以选择不同的模板,其实它才是把源码变成IL的标准——模板不同是因为针对于不同的语法糖进行不同的翻译。比如一个例子using语句块其实就是try-finally块,不同的framework中使用不同的类库与语法糖。换句话来说,开发中所增加的都是使用基本类库与语法糖的增加。
比如.net framework 4.5中存在一个运算符,(?.)运算,它就会在.net framework 4.5时会映射到正确的IL语言。而在.net framework 4.0中却不会认识该运算符。当然了 vari?.Attribute1与.net framework 4.0中vari==null?null:vari.Attribute1的结果是一样的。虽然.net framework 4.5比4.0增加了不少的东西,它其实只是方便了你写的源码,IL指令并没有任何的增加!
所以呢每当.net framework版本增加时,其实只变化了一些我们编码时的语法或语法糖而已!并附带送给我们几个模板或新开发几个模板而已。比如MVC/web api等等模板。
说完了生成,现在再说一下IL是怎么运行的,IL其实并不能直接运行,我们需要一个标准把IL再"映射“成可运行的二进制(机器语言),源码”映射“成IL使用的是.net framework,而IL映射成二进制需要的是.net,不同的是我们把源码”映射“IL叫编译,使用的是.net framework,也叫编译态,而IL映射成二进制并运行,这个叫运行态。所以我们称两个的区别一个叫开发环境,一个叫运行环境。如果按照正常的理解,其实我们一个用的是.net framework 4.X,运行时我们安装的dotnet4f,是运行环境。
运行环境的虚拟机就是为了把IL映射成二进制(Native Image),而且我们会保存起来,当然了,下次使用相同的IL时,直接使用Native Image中已保存的,不再执行翻译了,这个就是运行时的机制。
大多数时间很多人把开发环境与运行环境弄混了,为什么呢?因为我们开发时避免不了要测试及运行,所以开发环境包含了运行环境(你安装.net framework时同时会安装运行环境),而不需要开发的人员比如如使用windows 10中已经安装了部分的.net 运行环境支持,所以他们也不需要了解这个东西。只在在出现类似.net framework 4.0在vista版本中运行时,就需要给vista非开发机安装.net framework运行版本。否则不需要。所以很多人把开发环境与运行环境混在一起理解了。
事实上,.net framework 2.0/3.5开发的软件,生成了IL标准都是2.0的,所以我们只需要2.0的运行环境。而.net 4.0及4.x.y都使用的是.net 4.0的运行环境。
说白了,.net有开发版本,而framework相当于编译时使用的标准。而IL的标准则是MSIL,也叫是我们常说的CLS,而把运行态叫CLR(公共语言运行时)是虚拟机要执行的标准。
所以,其概况非常简单,.net支持多种语言,多种语言都是可以生成IL依赖于不同的编译器,比如csc/vbc等。可以让不同的语言开发者在同平台下工作。而IL(中间语言)再由虚拟机在不同的机器上翻译成不同的机器语言,保证了其移植性。包括现在支持的linux新标准也是如此方式。跨平台则使用是native image方式。
分清这两个步骤,那么.net就没有什么神密的了。
告诉你几个事实,有助于理解问题。
C#生成的IL可以被反射成VB语法!当然反向也可以!Red gate的reflector已被MS收购。可以试试的,原来的ILDism已被基本放弃了!它是早期做为VS的插件工具出现的。当然ILSpy也是不错的,那只是一个反射工具而已。请细想为什么C#生成的IL可以反射成VB语言(反射的准确度与各家软件的功能有一定的关系)00
.net framework 4.0的生成的IL可以被反射成4.7.2的语法!想想这是为什么?如果你运行环境与编译环境搞混的话,假定IL中也有4.7.2的运行环境,那么怎么可能版本之间相互反射?但是,.net 2.0生成的IL反射成.net 4.0会存在问题,.net 4.0生成的IL反射成2.0会会现很多错误!其实.net 4.0并不包含.net 2.0的语法集,所以这两个运行版本并不兼容,反射软件只会把相同的部分反射出来,不同的部分就难以反映了!.net 2.0反射4.0的结果要好点,这是因归功于.net framework为了降低学习成本,有一定的连续性,但是这种连续性在高版中部分.开发使用的C#语法被放弃(放弃与清除是不同的,放弃还能反射出来,清除的却无法再反射了)。
搞清这些就能搞清楚.net的两段三步(两段开发段/运行段,三步,源码语法(C#/VB),IL语法(MSIL), 二进制(可运行的机器语言))。
,net中什么是IL 文件?谢谢。
跨平台跨语言的中间语言,介于程序员编写的那种代码,与最终执行时生成的机器码之间。具有一定的可读性,可以反编译
常用邮箱的后缀都有哪些
以下为 常用邮箱后缀,国外常用邮箱,国内常用邮箱,国家或地区常用邮箱后缀等列表:
常用邮箱后缀
@gmail.com
@yahoo.com
@msn.com
@hotmail.com
@aol.com
@ask.com
@live.com
@qq.com
@0355.net
@163.com
@163.net???????????
@263.net?????????????????????????????
@3721.net??
@yeah.net
@googlemail.com
@mail.com
国外常用邮箱:
@hotmail.com
@msn.com
@yahoo.com
@gmail.com
@aim.com
@aol.com
@mail.com
@walla.com
@inbox.com
国内常见邮箱:
@126.com
@163.com
@sina.com
@21cn.com
@sohu.com
@yahoo.com.cn
@tom.com
@qq.com
@etang.com
@eyou.com
@56.com
@x.cn
@chinaren.com
@sogou.com
@citiz.com
国家或地区常用邮箱后缀:
中国香港:@hongkong.com?
@ctimail.com??
@hknet.com?
@netvigator.com???
@mail.hk.com?
@swe.com.hk
@ITCCOLP.COM.HK???
@BIZNETVIGATOR.COM?
中国台湾:@SEED.NET.TW???
@TOPMARKEPLG.COM.TW
@PCHOME.COM.TW???
@***.hinet.net???
巴基斯坦:@cyber.net.pk??
阿曼:omantel.net.om
意大利:@libero.it 南非:@webmail.co.za??
新西兰:@xtra.co.nz?
新加坡:@pacific.net.sg?
@FASTMAIL.FM 阿联酋:@emirates.net.ae @eim.ae?
叙利亚:@net.sy??
@scs-net.org
@mail.sy 土耳其:@ttnet.net.tr @superonline.com???
也门:@yemen.net.ye @y.net.ye??
塞浦路斯:@cytanet.com.cy??
美国:@aol.com?
@netzero.net?
@twcny.rr.com??
@comcast.net @warwick.net?
@comcast.net @cs.com??
@verizon.net??
澳大利亚:@bigpond.com?
希腊:@otenet.gr??
巴基斯坦 : @cyber.net.pk?
印度:@vsnl.com?
@wilnetonline.net??
@cal3.vsnl.net.in???
@rediffmail.com??
@sancharnet.in@NDF.VSNL.NET.IN??
@DEL3.VSNL.NET.IN??
新西兰 :??@xtra.co.nz??
俄罗斯:@yandex.ru???
德国:@t-online.de ???
以色列:@NETVISION.NET.IL?
澳大利亚:@BIGPOND.NET.AU?
俄罗斯:@MAIL.RU EV???
泰国:@ADSL.LOXINFO.COM?
叙利亚:@SCS-NET.ORG??
阿拉伯联合酋长国:@EMIRATES.NET.AE?
科威特:@QUALITYNET.NET???
以色列:@ZAHAV.NET.IL @netvision.net.il??
@xx.org.il?
越南:@hn.vnn.vn @hcm.fpt.vn @hcm.vnn.vn??
日本@candel.co.jp???
赞比亚:@zamnet.zm??
阿根廷:@amet.com.ar??
@infovia.com.ar?
马其顿:@mt.net.mk?
几内亚:@sotelgui.net.gn??
墨西哥:@prodigy.net.mx???
孟加拉:@citechco.net???
意大利:@xxx.meh.es?
@terra.es??
法国:@wannado.fr?
@mindspring.com??
@excite.com???
津巴布韦:@africaonline.co.zw??
@samara.co.zw?
@zol.co.zw??
@mweb.co.zw??
科特迪瓦:@aviso.ci??
@africaonline.co.ci??
@afnet.net??
纳米比亚:@mti.gov.na???
@namibnet.com??
@iway.na??
@be-local.com??
尼泊尔:@infoclub.com.np??
@mos.com.np???
@ntc.net.np??
汤加:@kalianet.to??
阿塞拜疆:@mail.ru??
印尼:@dnet.net.id???
巴西:@sinos.net??
澳大利亚:@westnet.com.au???
@gionline.com.au???
@cairns.net.au?
土耳其:@mynet.com
马其顿:@mt.net.mk??
爱尔兰:@indigo.ie
@eircom.net???
联合国:@sbcglobal.net???
@ntlworld.com???
沙特阿拉伯:@nesma.net.sa???
蒙古:@mail.mn??????
日耳曼:@tiscali.co.uk???
瑞典:@caron.se?????????
南非:@vodamail.co.za??
奥地利:@eunet.at????????????
希腊:@spark.net.gr???
波兰:@swiszcz.com????
法国:@club-internet.fr??
挪威:@walla.com
拓展资料:
电子邮箱(E-MAIL BOX)是通过网络电子邮局为网络客户提供的网络交流的电子信息空间。电子邮箱具有存储和收发电子信息的功能,是因特网中最重要的信息交流工具。在网络中,电子邮箱可以自动接收网络任何电子邮箱所发的电子邮件,并能存储规定大小的等多种格式的电子文件。电子邮箱具有单独的网络域名,其电子邮局地址在@后标注。可以在后面随时的观看,信息等
.net里的il 是什么的缩写,什么意思
一楼回答错误。
IL是中间层语言
上层代码编译完成后都要转换为中间语言供CLR使用
IL为Intermediate Language
有时候也叫Microsoft Intermediate Language
中间语言使得在.Net中各种语言的方便交互成为了可能。
第二语言习得概论中IL是什么的缩写
第二语言习得概论中IL是NET框架中中间语言IntermediateLanguage的缩写。
使用NET框架提供的编译器可以直接将源程序编译为.exe或.dll文件,但此时编译出来的程序代码并不是CPU能直接执行的机器代码,而是一种中间语言IL的代码。