奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

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

主站蜘蛛池模板: 康定县| 广饶县| 秀山| 天气| 迁安市| 靖江市| 景德镇市| 张北县| 白山市| 辽宁省| 株洲市| 高台县| 蕉岭县| 疏勒县| 通河县| 黄冈市| 阳东县| 平乐县| 开江县| 福海县| 阳城县| 崇礼县| 佛山市| 周宁县| 额尔古纳市| 九龙坡区| 城市| 营口市| 长兴县| 满洲里市| 九台市| 额济纳旗| 文成县| 金堂县| 宁国市| 安国市| 甘泉县| 江西省| 谷城县| 嘉黎县| 齐齐哈尔市|