上海龙凤419

C说话

浅谈C#说话的特色

时辰:2024-11-01 09:41:51 宗睿 C说话 我要投稿
  • 相干保举

浅谈C#说话的特色

  C#是微软公司宣布的一种由C和C++衍生出来的面向东西的编程说话、运转于.NET Framework和.NET Core(完整开源,跨平台)之上的高等法式设想说话。小编带来的浅谈C#说话的特色。

  Microsoft.NET(以下简称.NET)框架是微软提出的新一代Web软件开辟模子,C#说话是.NET框架中新一代的开辟东西。C#说话是一种古代、面向东西的说话,它简化了C++说话在类、定名空间、方式重载和很是处置等方面的操纵,它抛却了C++的庞杂性,更轻易利用,更少犯错。它利用组件编程,和VB一样轻易利用。C#语法和C++和JAVA语法很是近似,若是读者用过C++和JAVA,进修C#说话应是比拟轻松的。

  用C#说话编写的源法式,必须用C#说话编译器将C#源法式编译为中心说话(MicroSoft Intermediate Language,MSIL)代码,构成扩大名为exe或dll文件。中心说话代码不是CPU可履行的机械码,在法式运转时,必须由通用说话运转情况(Common Language Runtime,CLR)中的既时编译器(JUST IN Time,JIT)将中心说话代码翻译为CPU可履行的机械码,由CPU履行。CLR为C#说话中心说话代码运转供给了一种运转时情况,C#说话的CLR和JAVA说话的假造机近似。这类履行方式使运转速率变慢,但带来别的一些益处,首要有:

  通用说话规范(Common Language Specification,CLS):.NET体系包罗以下说话:C#、C++、VB、J#,他们都遵照通用说话规范。任何遵照通用说话规范的说话源法式,都可编译为不异的中心说话代码,由CLR担任履行。只需为别的操纵体系体例响应的CLR,中心说话代码也可在别的体系中运转。

  主动内存办理:CLR内建渣滓搜集器,当变量实例的性命周期竣事时,渣滓搜集器担任发出不被利用的实例占用的内存空间。不必象C和C++说话,用语句在堆中成立的实例,必须用语句开释实例占用的内存空间。也便是说,CLR具备主动内存办理功效。

  穿插说话处置:由于任何遵照通用说话规范的说话源法式,都可编译为不异的中心说话代码,差别说话设想的组件,能够也许相互通用,能够也许从别的说话界说的类派生出本说话的新类。由于中心说话代码由CLR担任履行,是以很是处置方式是分歧的,这在调试一种说话挪用另外一种说话的子法式时,显得出格便利。

  增添宁静:C#说话不撑持指针,统统对内存的拜候都必须经由进程东西的援用变量来完成,只许可拜候内存中许可拜候的局部,这就防止病毒法式利用不法指针拜候公有成员。也防止指针的误操纵发生的毛病。CLR履行中心说话代码前,要对中心说话代码的宁静性,完整性停止考证,防止病毒对中心说话代码的点窜。

  版本撑持:体系中的组件或静态连接库能够也许要进级,由于这些组件或静态连接库都要在注册表中注册,由此能够也许带来一系列题目,比方,装置新法式时主动装置新组件替换旧组件,有能够也许使某些必须利用旧组件才能够也许运转的法式,利用新组件运转不了。在.NET中这些组件或静态连接库不必在注册表中注册,每一个法式都能够也许利用自带的组件或静态连接库,只需把这些组件或静态连接库放到运转法式地点文件夹的子文件夹bin中,运转法式就主动利用在bin文件夹中的组件或静态连接库。由于不须要在注册表中注册,软件的装置也变得轻易了,普通将运转法式及库文件拷贝到指定文件夹中就能够也许了。

  完整面向东西:不象C++说话,即撑持面向进程法式设想,又撑持面向东西法式设想,C#说话是完整面向东西的,在C#中不再存在全局函数、全区变量,统统的函数、变量和常量都必须界说在类中,防止了定名抵触。C#说话不撑持多重担当。

  算法例子:

  质因数分化算法

  咱们经由进程这个算法例子来简略弄大白各说话之间的差别,以下给出的是局部实古代码,更具体代码须要检查源文件。

  起首甚么是质因数分化算法?即肆意一个合数能够也许分化为多个质数相乘。

  比方:20 = 2 * 2 * 5; 45 = 3 * 3 * 5; 210 = 2 * 3 * 5 * 7

  按数学运算:列竖式或摆布分化,拿能被整除的最小的质数做除数,不时整除获得新的得数,最初把统统的除数和最初的得数连起来便是。

  质因数分化

  代码完成思绪:

  先设立一个除数,从最小的质数起头,也便是2;

  当能够也许被以后除数整除时,该除数便是因数,将原数字设为被整除后的成果;

  持续从该除数起头整除新的成果,并不时轮回;

  当没法被整除时,则递增获得新的除数,持续第2步;

  直到除数的平方大于要分化的值,停止轮回。 最初统统的除数与剩下的大于1的阿谁得数便是分化成果。

  各类编程说话的比拟:

  一、C说话

  C说话是面向进程的静态编译型说话,也是统统高等说话的始祖,能够也许说现在几近统统风行的说话都有C说话的影子。C说话在底层开辟,包罗操纵体系、驱动、中心件、图形库、数据库、收集库等开辟等有着无可替换的感化。

  C说话的性命力也是最长的,风行了近50年,至今仍是开辟排行榜前3的位置。C说话充足精练清楚,不那末多观点,也不那末多API,机能极好,它是统统编程职员都应当把握的说话,能够也许作为计较机根本来学。

  C说话代码完成以下,该factorize能够也许前往一个分化后的数组。从代码里能够也许看出,起首须要请求一个静态数组result,长度为len的内存空间。该数组用来保管分化数,每分化出一个数字时则追加到数组中去,数组下标也随之增添。当分化完成后,最初前往分化数的数组。

  代码逻辑:

  成立双轮回,自最小的质数2起头不时递增遍历。

  外层轮回为是不是持续分化的前提,当i的乘方小于即是要分化的数字时,申明还能够也许分化。i不时递增,直到i的平方大于num为止。

  内轮回则不时用num来除以约数,看可否除尽,能除尽则以得数作为新的num来持续分化,并将适才的除数i追加到分化成果中。当i没法整除num时,申明以后i分化完成,则跳出内轮回。

  当轮回停止后,最初分化的得数若是小于i的平方就没法持续分化,若是i大于1那剩下的num便是最初一个分化数。

  二、C++说话

  C++说话是C说话的超集,它扩大和完美了C说话。增添了类的观点,并引进了运算符重载、援用、虚函数等。C++做甚么都离不开东西和类,其焦点思惟是多态,担当,封装。C++的语法与C几近分歧,根基上C的代码能够也许在C++下运转,可是C++比C说话要庞杂和更难把握,相对来说C加倍清楚易懂。

  由于C说话相对简略,且是进程式,开辟大型庞杂体系或大型软件界面时会力有未逮,因而C++应运而生。实在我并不感受C++比C好或壮大,大型体系完整能够也许经由进程本身构造代码来获得杰出架构,也有良多零丁C说话UI库。

  C++的性命力也很壮大,几近是良多中大型体系、游戏、桌面软件、办事端、收集通讯等的首选说话,至今也在开辟排行榜前5的位置。

  这里C++代码完成与C说话分歧,由于不必到面向东西,以是不任何区分。其余差别能够也许从github堆栈里检查。

  三、Java说话

  Java说话发现于上世纪90年月,由Sun公司推出,后被Oracle收买。Java是一门面向东西编程说话,接收了C++的各类长处,但抛却了C++里难以懂得的多担当、指针等观点。同时供给了渣滓主动收受接管的才能,法式员再也不必手动开释内存了。

  Java的语法与C根基分歧,除增添了类和调集相干的观点。Java首要面向的范畴是背景开辟、中心件开辟、Android开辟、大数据开辟等,今朝Java是编程排行榜排名第一的说话,很是风行,作为入门进修说话很是不错。不过由于设想的过于松散呆板致使有些痴肥,今朝已有下滑的迹象。后起之秀Go、Kotlin、NodeJS、Dart无不在鲸吞Java的地皮。

  信任未几的将来,Java开辟排行榜老迈的位置将面对很大的挑衅。跟Java很是像的是它的老敌手C#,这个说话在Windows情况下那是相对的老迈,但惋惜在Linux和Mac、iOS、Android等体系下,C#几近置之不理。Java位置朝不保夕,但C#退化得不错,远景很好,这里不再赘述。

  这里Java版利用了ArrayList,是长度可变的列表,比拟C说话利用数组来说要便利些。代码上根基一样,若是也利用int数组,那代码就几近一样了。Java里统统都是以Class为根本,统统内容都必须放在Class内,方式(函数)、属性(变量)不能自力于外。

  四、JavaScript说话

  JavaScript是网景公司在90年月不经意间发现的一种说话,开初是为了处理阅读器内交互的题目。最初的名字是LiveScript,但当时Java方才推出,由于从语法上也参考了Java,是以就鉴戒了Java的名字,改成JavaScript。但现实上它的说话实质更靠近Self及Scheme,JavaScript是一门基于东西的函数式静态编程说话。它很是矫捷,语法愈来愈完美,看起来很是简略,可是要想真的搞大白道理,却并不轻易。

  中国有句话叫“无意插柳柳成荫”,这句话用在JavaScript身上再合适不过了。JavaScript博采众长,接收了Self、Scheme、Java、C等说话的上风,今朝已成长成为环球利用人数最多的编程说话,在开辟排行榜上也在不时爬升。

  JavaScript是弱范例说话,其数组不限范例,也无需指定长度,利用起来很是简略易懂。全部代码写法与Java也很是像,只不过精练了很多。

  JavaScript除独有阅读器编程以外,在背景开辟、挪动开辟、桌面开辟、嵌入式开辟等范畴均有所阐扬,能够也许说将来不可限量。乃至有人说但凡能够也许用JavaScript完成的利用,终究城市用JavaScript完成。

  五、TypeScript说话

  Typescript是微软在2012年推出的基于JavaScript的一个变种或称之为超集说话,完整兼容JavaScript,最初会编译成JS来履行。它首要增添了强范例和加强了面向东西,集成了接口和Type等观点,写法上与JS几无差别,有点近似于C++之于C的感受。

  TypeScript的成长态势也很好,在利用大型工程时,强范例和面向东西简直有些益处。跟着前端工程愈来愈复杂,TypeScript也愈来愈遭到接待。只是TypeScript由微软开辟,而JS来自ECMA这个国际化规范构造。

  且JavaScript正在不时成长变更,也在不时增添TS的那些语法糖。存在一个能够也许是将来有一天JS跟TS很是靠近,乃至完整分歧,当时辰TS能够也许面对加入编程舞台。但JS也许并不必然会那末成长,由于那跟矫捷多变的静态思绪有悖。

  是以TypeScript并不合适作为入门进修说话,而是在已比拟熟习JavaScript的根本上再来进修TypeScript会比拟好。

  六、Python说话

  Python是撑持面向东西和面向进程,也撑持函数式编程的诠释型编程说话,它在语法气概上也属于C说话系。但它与其余说话所差别的是接纳缩出去表现包罗干系,而不是花括号。喜好这类气概的人对此爱得要命,不喜好的人则恶感至极。

  从说话特征下去说,能够也许说Python与JS最为靠近,既能够也许接纳面向东西,也能够也许接纳函数式。它与Java差别,不变量范例申明关头词,方式也能够也许离开于类存在。Python整体上是一个强范例说话(但由于无需明白变量范例,和存在主动范例转换,以是也不是严酷意思的强范例)。

  看Python代码,能够也许说是最简略了然,最易懂。与JavaScript一样,Python也是静态剧本说话,列表(数组)也是静态可变的,其列表操纵很是好用。Python很合适老手进修,由于简略,同时含括了编程的几近统统观点。

  Python自90年月推出,初期为加强Shell剧本,厥后成长为Web背景说话,一向不温不火,厥后跟着大数据和野生智能的风行,Python在这两个范畴里大放光华,将来远景很是好,是最值得保举进修的入门说话。

  看下Python的代码量是不是起码(跟JS差未几),也最好懂?

  七、Go说话

  Go说话是静态编译强范例说话,由Google于2009年推出,其初志是替换C说话做体系开辟,但今朝来看更多是替换Java做办事端开辟。其语法气概与C很是靠近,在C说话根本上增添了内存宁静和渣滓主动收受接管功效。

  Go说话不以类为依靠,说话很是精练,语法气概上是C和JS的夹杂体,变量申明是var,数组空间须要提早请求,无需括号和分号。从这段代码来看与C说话差别不大,实质上是C的变体。

  Go说话今朝在微办事和云原生范畴颇受接待,在高并发、高可用Web利用中阐扬着杰出的感化,这局部有代替Java的趋向。Go说话在散布式体系、收集编程范畴表现杰出,今朝最风行的容器编排体系Kubernetes便是Go说话编写,将来更多云原生利用会逐步接纳Go说话。

  Go作为新贵,这几年起头在办事端大放异彩,是以若是您是新一代的开辟者,那末跳过C++和Java,间接进修Go也是值得保举的。看下Go的代码气概,您感受舒畅吗?我感受比起Java好一些。

【浅谈C#说话的特色】相干文章:

Java说话的根基特色07-30

Java说话的编程特色03-18

Java说话根基特色06-01

Java说话的5大特色08-27

Java说话有甚么特色09-14

Java说话的发生及其特色07-09

C说话的特色是甚么10-30

C说话的特色及版本有哪些08-17

浅谈Java说话中static的感化08-10

c#检测cpu利用率09-01