成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺析C#和Java不同點

開發 后端
本文介紹C#和Java不同點,把C#和Java的相似處列出來,雖然在這里我們重點討論的是C#和Java不同點,但是了解一下二者的相同之處也是很有必要的。

很多人說C#是微軟用來和Java抗衡的武器,因為二者在很大程度上有著驚人的相似,盡管如此,兩者不同的地方也很多,所謂“于細微處見異”。那么兩者的相似和區別都在什么地方呢?我們從今天開始,會從各個角度來對比C#和Java的特點,希望能對正在學習、使用C#的朋友有所幫助。

1、C#和.NET平臺的概貌

2000年6月,微軟發布C#語言和.NET平臺。C#語言是一種強類型的,面向對象的語言,它具有語法簡單、表達力強的特點,而。NET平臺則是構成微軟的“。NET計劃”的基石。。NET平臺的核心包括兩方面,一方面就是著名的通用語言運行機(Common LanguageRuntime),雖然這個名詞起得晦澀了點,不過大家可以拿它和Java的虛擬機來作比較,二者完成的任務大致相同;另一方面就是一大堆通用函數庫,這些庫函數可以被多種語言調用,并且通過編譯都產生一種共同的中間語言(Intermediate Language),這種語言也可以拿Java的字節碼來類比,雖然完成的方式有些不一樣。

2、C#和Java不同點

下面簡單地把C#和Java的相似處列出來,雖然在這里我們重點討論的是C#和Java不同點,但是了解一下二者的相同之處也是很有必要的。 二者都編譯成跨平臺的、跨語言的代碼,并且代碼只能在一個受控制的環境中運行自動回收垃圾內存,并且消除了指針(在C#中可以使用指針,不過必須注明unsafe 關鍵字)都不需要頭文件,所有的代碼都被“包(package)”限制在某個范圍內,并且因為沒有頭文件,所以消除了類定義的循環依賴所有的類都是從對象派生出來,并且必須使用New關鍵字分配內存用對象加鎖的方式來支持多線程都具有接口(interface)的概念

繼承類的時候不會以某種特定的訪問權限來繼承;。沒有全局函數或者常量,一切必須屬于類;。數組或者字符串都自帶長度計算和邊界檢查;。只使用“。”操作符,沒有“->”和“::”;。“null”、“boolean”和“bool”成為了關鍵字;。任何變量均在使用前進行初始化;。不能使用整數來返回到if條件語句中,必須使用布爾值;。“Try”模塊后可以有“finally” ;

3、屬性(Property)

屬性的概念對大家來說應該是很熟悉的,類成員函數可以自由地訪問本類中的任何屬性成員。不過若要從一個類中去訪問另一個類中的屬性,那就比較麻煩了,所以很多時候我們使用Getxxx和Setxxx方法,這樣看起來顯得極不自然,比如用Java或者C++,代碼是這樣的:

  1. foo.setSize (getSize () + 1);   
  2. label.getFont().setBold (true);   
  3. 但是,在C#中,這樣的方法被“屬性化”了。同樣的代碼,在C#就變成了:   
  4. foo.size++;   
  5. label.font.bold = true;  

可以看出來,C#顯然更容易閱讀和理解。我們從這個“屬性方法”的子程序代碼中,也可以看到類似情況:

  1. Java/C++:   
  2. public int getSize()   
  3. {   
  4. return size;   
  5. }   
  6. public void setSize (int value)   
  7. {   
  8. size = value;   
  9. }   
  10. C#:   
  11. public int Size   
  12. {   
  13.  get{return size;}   
  14.  set{size = value;}   
  15. }  

為了區分這種屬性化的方法和類的屬性成員,在C#中把屬性成員稱作“域(field)”,而“屬性”則成為這種“屬性化的方法”專用的名詞。順便說一句,其實這樣的屬性化方法在VB和DELPHI中是經常碰到的,在VB中它也就叫屬性。另外,在C#中Get和Set必須成對出現,一種屬性不能只有Get而沒有Set(在Java和C++中就可以只有Get或者只有Set),C#中這樣做的好處在于便于維護,假如要對某種屬性進行修改,就會同時注意Get和Set方法,同時修改,不會改了這個忘了那個。

4、對象索引機制(Indexer)

C#中引入了對象索引機制。說得明白點,對象索引其實就是對象數組。這里和上一節中的屬性聯系起來講一下,屬性需要隱藏Get和Set方法,而在索引機制中,各個對象的Get或者Set方法是暴露出來的。比如下面的例子就比較清楚地說明了這一點。以上介紹C#和Java不同點

  1. public class Skyscraper  
  2. {  
  3.  Story[] stories;  
  4.  public Story this [int index] {  
  5. get {  
  6.  return stories [index];  
  7. }  
  8. set {  
  9.  if (value != null) {  
  10.  
  11. stories [index] = value;  
  12.  }  
  13. }  
  14.  }  
  15. ...  

【編輯推薦】

  1. 概述C#實現文件下載
  2. C#搞定網站驗證碼的方法
  3. 淺談C# String對象
  4. C#命名空間學習筆記
  5. 淺析C#調用ActiveX控件
責任編輯:佚名 來源: 百度空間
相關推薦

2009-08-25 09:58:56

C#參數不同點

2009-09-22 13:14:29

Hibernate gHibernate l

2010-08-24 09:29:37

內連接全連接

2011-09-02 14:45:43

Oracle臨時表SQL Server臨

2010-02-03 17:32:54

C++左值與右值

2009-08-27 13:50:08

C# StringBu

2009-08-19 10:41:14

C# switch和c

2010-08-12 08:57:25

2009-08-27 16:18:47

C#類C#結構體

2009-08-26 09:54:45

C#打印預覽C#打印

2009-09-10 16:38:43

C# get set用

2009-08-31 09:20:37

C#事件注冊和注銷

2009-08-07 17:25:37

C# SortedLi

2009-08-17 18:34:50

C# ChangeCo

2009-08-14 17:45:52

C# ArrayLis

2009-08-25 17:59:49

C#入門

2009-09-03 17:31:34

C#發送郵件

2009-10-09 09:07:40

C#委托和事件

2009-08-17 18:04:49

C# 枚舉

2009-08-03 16:28:53

Java語言與C#語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人激情视频网 | 国产日韩欧美一区 | 特级生活片 | 中文字幕av一区二区三区 | 午夜精品久久久久久久久久久久久 | 黑人巨大精品欧美一区二区免费 | 久在线精品视频 | 99精品久久久久久久 | 久久精品影视 | 久久午夜视频 | 中文亚洲视频 | 琪琪午夜伦伦电影福利片 | 色婷婷综合久久久久中文一区二区 | 国产精品久久久99 | 一级毛片在线播放 | 亚洲一区二区三区四区五区中文 | 美人の美乳で授乳プレイ | 国产一级毛片精品完整视频版 | 日韩亚洲欧美一区 | 色综合av | 欧美日韩精品一区 | 中文字幕成人av | 国产精品久久久久久妇女6080 | 国产高清视频在线观看 | 国产精品久久欧美久久一区 | 蜜桃av鲁一鲁一鲁一鲁 | 精品美女| 国产成人福利视频 | 精品欧美一区二区精品久久 | 91在线视频精品 | 中国美女一级黄色片 | 亚洲狠狠 | 福利在线观看 | 日韩在线观看中文字幕 | 国产精品成人一区 | 国产成人a亚洲精品 | 91国在线视频 | 红色av社区 | 欧美在线一区视频 | 99久久婷婷国产综合精品电影 | 91在线|