C# 語言是一種簡(jiǎn)單但功能強(qiáng)大的編程語言,用于編寫企業(yè)應(yīng)用程序。
C# 語言從 C 和 C++ 語言演化而來。它在語句、表達(dá)式和運(yùn)算符方面使用了許多 C++ 功能。
C# 語言在類型安全性、版本轉(zhuǎn)換、事件和垃圾回收等方面進(jìn)行了相當(dāng)大的改進(jìn)和創(chuàng)新。
C# 語言提供對(duì)常用 API 樣式(如 .NET Framework、COM、自動(dòng)化和 C 樣式 API 等)的訪問。它還支持 unsafe 模式,在此模式下可以使用指針操作不受垃圾回收器控制的內(nèi)存。
C# 是一種精確、簡(jiǎn)單、類型安全、面向?qū)ο蟮恼Z言,它使企業(yè)程序員得以構(gòu)建廣泛的應(yīng)用程序。
C# 還憑借以下功能,為您提供生成持久系統(tǒng)級(jí)組件的能力:
- 對(duì)集成現(xiàn)有代碼提供完全 COM/平臺(tái)支持。
- 通過提供垃圾回收和類型安全實(shí)現(xiàn)可靠性。
- 通過提供內(nèi)部代碼信任機(jī)制保證安全性。
- 完全支持可擴(kuò)展元數(shù)據(jù)概念。
C# 還可以憑借以下功能,與其他語言交互操作、跨平臺(tái)互用并與遺留的數(shù)據(jù)交互操作:
- 通過 COM+ 1.0 和 .NET Framework 服務(wù)提供具有緊密庫訪問的完全相互作用支持。
- 對(duì)基于 Web 的組件交互提供 XML 支持。
- 版本轉(zhuǎn)換功能使管理和部署變得簡(jiǎn)易。
下表包含 C++ 和 C# 功能之間的重要比較。如果您是一位 C++ 程序員,此表將為您提供這兩種語言的最重要差異。有關(guān)詳細(xì)信息,請(qǐng)使用鏈接瀏覽詳細(xì)的主題。
注意 C++ 和 C# 項(xiàng)目派生于不同的項(xiàng)目模型。有關(guān) C++ 和 C# 項(xiàng)目之間差異的信息,請(qǐng)參見項(xiàng)目中的項(xiàng)管理和使用解決方案資源管理器。
功能 |
參考主題 |
繼承:類只能繼承一個(gè)基類中的實(shí)現(xiàn)。另外,類或接口可以實(shí)現(xiàn)多個(gè)接口。 |
class
interface |
數(shù)組:聲明 C# 數(shù)組和聲明 C++ 數(shù)組的語法不同。在 C# 中,“[]”標(biāo)記出現(xiàn)在數(shù)組類型的后面。 |
數(shù)組 |
bool 類型:bool 類型和其他類型(特別是 int)之間沒有轉(zhuǎn)換。 |
bool |
long 類型:在 C# 中,long 數(shù)據(jù)類型為 64 位,而在 C++ 中為 32 位。 |
long |
struct 類型:在 C# 中,類和結(jié)構(gòu)在語義上不同。struct 是值類型,而 class 是引用類型。 |
struct
class |
switch 語句:與 C++ 中的 switch 語句不同,C# 不支持從一個(gè) case 標(biāo)簽貫穿到另一個(gè) case 標(biāo)簽。 |
switch |
delegate 類型:委托與 C++ 中的函數(shù)指針基本相似,但前者具有類型安全,是安全的。 |
delegate |
從派生類調(diào)用重寫基類成員。 |
base
請(qǐng)參見 override 的示例 |
使用 new 修飾符顯式隱藏繼承成員。 |
new |
聲明重寫方法需要有 override 關(guān)鍵字。 |
override |
預(yù)處理器指令用于條件編譯。C# 中不使用頭文件。 |
C# 預(yù)處理器指令 |
異常處理:使用 finally 語句。 |
try-finally
try-catch-finally |
C# 運(yùn)算符:C# 支持其他運(yùn)算符,如 is 和 typeof。它還引入了某些邏輯運(yùn)算符的不同功能。 |
& 運(yùn)算符
| 運(yùn)算符
^ 運(yùn)算符
is
typeOf |
關(guān)鍵字 extern 的使用。 |
extern |
關(guān)鍵字 static 的使用。 |
static |
在構(gòu)造基類上替代 C++ 初始化列表的方法。 |
請(qǐng)參見 virtual 的示例 |
C# 程序的常規(guī)結(jié)構(gòu):命名空間、類、結(jié)構(gòu)、委托和枚舉。 |
C# 程序的常規(guī)結(jié)構(gòu) |
Main 方法和 C++ 中的 main 函數(shù)的聲明方式不同。另外,比較每種語言的命令行參數(shù)的使用。 |
Main |
方法參數(shù):C# 支持 ref 和 out 參數(shù),這兩個(gè)參數(shù)取代指針通過引用傳遞參數(shù)。 |
ref
out |
在 C# 中只在不安全模式下才使用指針。 |
unsafe |
在 C# 中以不同的方式執(zhí)行重載運(yùn)算符。 |
C# 運(yùn)算符 |
字符串:C# 字符串不同于 C++ 字符串。 |
string |
foreach 關(guān)鍵字使您得以循環(huán)訪問數(shù)組和集合。 |
foreach, in |
C# 中沒有全局方法和全局變量:方法和變量必須包含在類型聲明(如 class 或 struct)中。 |
C# 程序的常規(guī)結(jié)構(gòu) |
C# 中沒有頭文件和 #include 指令:using 指令用于引用其他未完全限定類型名的命名空間中的類型。 |
using |
C# 中的局部變量在初始化前不能使用。 |
5. 變量 |
析構(gòu)函數(shù):在 C# 中,不能控制析構(gòu)函數(shù)的調(diào)用時(shí)間,原因是析構(gòu)函數(shù)由垃圾回收器自動(dòng)調(diào)用。 |
析構(gòu)函數(shù) |
構(gòu)造函數(shù):與 C++ 類似,如果在 C# 中沒有提供類構(gòu)造函數(shù),則為您自動(dòng)生成默認(rèn)構(gòu)造函數(shù)。該默認(rèn)構(gòu)造函數(shù)將所有字段初始化為它們的默認(rèn)值。 |
實(shí)例構(gòu)造函數(shù)
默認(rèn)值表 |
C# 不支持位域。 |
C++ 位域 |
C# 的輸入/輸出服務(wù)和格式設(shè)置依賴于 .NET Framework 的運(yùn)行時(shí)庫。 |
C# 語言教程
格式化數(shù)值結(jié)果表 |
在 C# 中,方法參數(shù)不能有默認(rèn)值。如果要獲得同樣的效果,請(qǐng)使用方法重載。 |
編譯器錯(cuò)誤 CS0241 |
有關(guān) C# 和其他編程語言的比較,請(qǐng)參見等效語言文檔。
-----------------------------------------------
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cssample/html/vcoriCSharpSamples.asp