|
一、C#、C++和Java
C#的語言規范由Microsoft的Anders Hejlsberg與Scott Wiltamuth編寫。在當前Microsoft天花亂墜的宣傳中,對C#和C++、Java作一番比較總是很有趣的。考慮到當前IT媒體的輿論傾向,如果你早就知道C#更接近Java而不是C++,事情也不值得大驚小怪。顯然,結論應該是:Java和C#雖然不是孿生子,但C#最主要的特色卻更接近Java而不是C++。
表1:比較C#、C++和Java最重要的功能 | |||
功能 | C# | C++ | Java |
繼承 | 允許繼承單個類,允許實現多個接口 | 允許從多個類繼承 | 允許繼承單個類,允許實現多個接口 |
接口實現 | 通過“interface”關鍵詞 | 通過抽象類 | 通過“interface”關鍵詞 |
內存管理 | 由運行時環境管理,使用垃圾收集器 | 需要手工管理 | 由運行時環境管理,使用垃圾收集器 |
指針 | 支持,但只在很少使用的非安全模式下才支持。通常以引用取代指針 | 支持,一種很常用的功能。 | 完全不支持。代之以引用。 |
源代碼編譯后的形式 | .NET中間語言(IL) | 可執行代碼 | 字節碼 |
單一的公共基類 | 是 | 否 | 是 |
異常處理 | 異常處理 | 返回錯誤 | 異常處理。 |
下面將說說C#和Java的一些重要區別。
二、語言規范的比較
2.1、簡單數據類型
簡單數據類型(Primitive)在C#中稱為值類型,C#預定義的簡單數據類型比Java多。例如,C#有unit,即無符號整數。表2列出了所有C#的預定義數據類型:
表2:C#中的值類型 | |
類型 | 說明 |
object | 所有類型的最終極的基類 |
string | 字符串類型;字符串是一個Unicode字符的序列 |
sbyte | 8位帶符號整數 |
short | 16位帶符號整數 |
int | 32位帶符號整數 |
long | 64位帶符號整數 |
byte | 8位無符號整數 |
ushort | 16位無符號整數 |
uint | 32位無符號整數 |
ulong | 64位無符號整數 |
float | 單精度浮點數類型 |
double | 雙精度浮點數類型 |
bool | 布爾類型;bool值或者是true,或者是false |
char | 字符類型;一個char值即是一個Unicode字符 |
decimal | 有28位有效數字的高精度小數類型 |
2.2、常量
忘掉Java中的static final修飾符。在C#中,常量可以用const關鍵詞聲明。
public const int x = 55;
NET技術:C# VS Java,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。