首頁 > 常見問題 > 適合開發桌面軟體的程式語言?

適合開發桌面軟體的程式語言?

Guanhui
發布: 2020-06-03 15:58:29
原創
9768 人瀏覽過

適合開發桌面軟體的程式語言?

適合開發桌面軟體的程式語言?

適合開發桌面軟體的程式語言是C#,C#是微軟公司發布的一種由C和C 衍生出來的物件導向的程式語言,運行於「.NET Framework」和「. NET Core」之上的語言,並且具有強大的操作能力、優雅的語法風格和創新的語言特性。

C# 語言結構

#類別:一個基本的C#類別包含資料成員、屬性、建構器和方法。屬性可以是靜態或實例成員。在C#中類別的宣告與C 和Java很相似。但是,不像C ,C#結構體與類別是不支援繼承多個父類別。但是,與Java相同的是,一個結構體可以實作介面(interface)。 Java的關鍵字import已經被替換成using,它起到了同樣的作用。

類別可以是抽象的、不可繼承的:一個被申明成abstract的類別不能被實例化,它只能被用做一個基底類,C#關鍵字lock就像Java關鍵字final,它申明一個類別不是抽象的,但是它也不能被用做另一個類別的基底類別介面:就像在Java中一樣,一個介面是一組方法集合的抽象定義。當一個類別或結構體實作一個介面的時候,它必須實作這個介面中定義的所有方法。一個單一的類別可以實現幾個接口,也許以後會出現一些微妙的差別,但是這個特點看起來與Java相比沒有變化。

布林運算:條件表達式的結果是布林資料類型,布林資料型別是這種語言中獨立的一種資料型別,從布林型別到其他型別沒有直接的轉換過程,布林常數true和false是C#中的關鍵字。錯誤處理:如Java中那樣,透過拋出和捕捉異常物件來管理錯誤處理過程。 

記憶體管理:由底層.NET架構進行自動記憶體垃圾回收。

介面:是其他類型為確保它們支援某些操作而實現的參考類型。介面從不直接建立且沒有實際的表示形式,其他類型必須轉換為介面類型。

一個介面定義一個協定。實作介面的類別或結構必須遵守其協定。介面可以包含方法、屬性、索引器和事件作為成員。

強型別:C#是強型別的語言,它的數值型別有些可以進行隱式轉換,其他的必須顯式轉換,隱式轉換的型別只能是長度短的型別轉換成長的類型,int可以轉換成long、float、double、decimal,反之必須明確的轉換。

編譯:程式直接編譯成標準的二進位可執行形式.但C#的原始程式並不是被編譯成二進位可執行形式,而是一種中間語言(IL),類似於JAVA字節碼。如果前面的Hello World程式被儲存成一個

文字檔並被命名為Hello.cs,它將被編譯成命名Hello.exe的可執行程式。

C#程式無法直接編譯成標準的二進位可執行形式,與Java 類似,它被編譯為中間程式碼(Microsoft Intermediate Language),然後透過.NET Framework 的虛擬機器-稱為通用語言執行層(Common Language Runtime, CLR)-執行。

一個C#的結構體與C 的結構體是相似的,因為它能夠包含資料宣告與方法.但是,不像C ,C#結構體與類別是不同的而且不支援繼承.但是,與Java相同的是,一個結構體可以實作介面。

預編譯:C# 中存在預編譯指令支援條件編譯,警告,錯誤報告和編譯行控制.可用的預編譯指令有:#define,#undef,#if,#elif,#else, #endif,#warning,#error,#line。

沒有了#include偽指令,無法再用#define 語句對符號賦值,所以就不存在源代碼替換的概念--這些符號只能用在#if和#elif偽指令裡.在#line偽指令裡的數字(和可選的名字)能夠修改行號還有#warning和#error輸出結果的檔名。

運算子重載:有些運算子能夠被重載,而有些則不能.特別的是,沒有一個賦值運算子能夠被重載.能夠被重載的單目運算子是: - ! ~ -- true false 能夠被重載的二元運算子是: 、 - 、*、 /、 %、 &、 |、 ^、 << 、>>、==、 !=、 >、 < 、>= 、<=。 

類型:C# 中的型別共分為兩類,一類是值型別(Value Type),一類是參考型別(Reference Type)。值類型和引用類型是以它們在電腦記憶體中是如何被分配的來劃分的。值類型包括 結構和枚舉,引用類型包括類別、介面、委託 等。還有一種特殊的值類型,稱為簡單類型(Simple Type),例如byte,int等,這些簡單類型實際上是FCL類別庫類型的別名,例如聲明一個int類型,實際上是聲明一個System. Int32結構類型。因此,在 Int32型別中定義的操作,都可以套用在int型別上,例如 “123.Equals(2)”。

所有的值型別都隱含地繼承自System.ValueType型別(注意System.ValueType本身就是一個類別型別),System.ValueType與所有的參考型別都 繼承自 System.Object基底類別。不能明確地讓結構繼承一個類,因為C#不支援多重繼承,而結構已經隱式繼承自ValueType。

NOTE:堆疊(stack)是一種後進先出的資料結構,在記憶體中,變數會被分配在堆疊上來進行操作。堆(heap)是用於為類型實例(對象)分配空間的記憶體區域,在堆上建立一個對象,會將對象的地址傳給堆疊上的變數(反過來叫變數指向此對象,或變數引用此對象)。

中間程式碼:微軟在用戶選擇何時MSIL應該編譯成機器碼的時候

是留了很大的餘地.微軟公司很小心的聲稱MSIL不是解釋性的,而是被編譯成了機器碼.它也明白許多--如果不是大多數的話--程式設計師認為Java程式要不可避免的比C編寫的任何東西都要慢.而這種實現方式決定了基於MSIL的程式(指的是用C#,Visual Basic,"Managed C "--C 的一個符合CLS的版本--等語言編寫的程式)將在性能上超過"解釋性的"Java程式碼.當然,這一點還需要事實證明,因為C#和其他生成MSIL的編譯器還沒有發布.但是Java JIT編譯器的普遍存在使得Java和C#在性能上相對相同.象"C#是編譯語言而Java是解釋性的,"之類的聲明只是商業技巧.Java的中間程式碼和MSIL都是中間的彙編形式的語言,它們在運行時或其它的時候被編譯成機器碼。

推薦教學:《C#》

以上是適合開發桌面軟體的程式語言?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
c
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板