日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
淺析C#和Java不同點(diǎn)

很多人說C#是微軟用來和Java抗衡的武器,因?yàn)槎咴诤艽蟪潭壬嫌兄@人的相似,盡管如此,兩者不同的地方也很多,所謂“于細(xì)微處見異”。那么兩者的相似和區(qū)別都在什么地方呢?我們從今天開始,會(huì)從各個(gè)角度來對(duì)比C#和Java的特點(diǎn),希望能對(duì)正在學(xué)習(xí)、使用C#的朋友有所幫助。

為延平等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及延平網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、延平網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

1、C#和.NET平臺(tái)的概貌

2000年6月,微軟發(fā)布C#語言和.NET平臺(tái)。C#語言是一種強(qiáng)類型的,面向?qū)ο蟮恼Z言,它具有語法簡(jiǎn)單、表達(dá)力強(qiáng)的特點(diǎn),而。NET平臺(tái)則是構(gòu)成微軟的“。NET計(jì)劃”的基石。。NET平臺(tái)的核心包括兩方面,一方面就是著名的通用語言運(yùn)行機(jī)(Common LanguageRuntime),雖然這個(gè)名詞起得晦澀了點(diǎn),不過大家可以拿它和Java的虛擬機(jī)來作比較,二者完成的任務(wù)大致相同;另一方面就是一大堆通用函數(shù)庫,這些庫函數(shù)可以被多種語言調(diào)用,并且通過編譯都產(chǎn)生一種共同的中間語言(Intermediate Language),這種語言也可以拿Java的字節(jié)碼來類比,雖然完成的方式有些不一樣。

2、C#和Java不同點(diǎn)

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

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

3、屬性(Property)

屬性的概念對(duì)大家來說應(yīng)該是很熟悉的,類成員函數(shù)可以自由地訪問本類中的任何屬性成員。不過若要從一個(gè)類中去訪問另一個(gè)類中的屬性,那就比較麻煩了,所以很多時(shí)候我們使用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#顯然更容易閱讀和理解。我們從這個(gè)“屬性方法”的子程序代碼中,也可以看到類似情況:

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

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

4、對(duì)象索引機(jī)制(Indexer)

C#中引入了對(duì)象索引機(jī)制。說得明白點(diǎn),對(duì)象索引其實(shí)就是對(duì)象數(shù)組。這里和上一節(jié)中的屬性聯(lián)系起來講一下,屬性需要隱藏Get和Set方法,而在索引機(jī)制中,各個(gè)對(duì)象的Get或者Set方法是暴露出來的。比如下面的例子就比較清楚地說明了這一點(diǎn)。以上介紹C#和Java不同點(diǎn)

 
 
 
  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. stories [index] = value;
  11.  }
  12. }
  13.  }
  14. ...
  15. }

當(dāng)前題目:淺析C#和Java不同點(diǎn)
文章網(wǎng)址:http://www.dlmjj.cn/article/djjspec.html