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