日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

C#與JAVA的比較

 Frank_Chia 2009-08-09
  
                                                         ASP.NET基礎教程:C#與JAVA的比較
        
        簡單地說,它們不是一種語言,語法有差別,編程時具體用到的類庫或者函數(shù)庫也不一樣。

  雖然它們不是一種語言,不過它們卻也有所聯(lián)系。廣泛地說,C可以看作其他三種語言的源語言,因為其他三種語言幾乎都是從C而來的,無論從數(shù)據(jù)類型還是控制語句看,其他三種語言都有從C得來的跡象。

  其中C++則一般看作是對C語言的擴展。因為C語言沒有面向對象的語法結構,而當時業(yè)界又迫切需要面向對象的編程特性,所以貝爾實驗室的開發(fā)者就為C添加了面向對象的結構?,F(xiàn)在C++已經(jīng)不只是C的擴展了,它已經(jīng)完全可以被看作一種新的編程語言。雖然C的特性以及庫函數(shù)仍然被C++支持,不過C++擁有自己的獨立的類庫體系,功能相當強大。

 ?。剩幔觯嵴Z言是一種完全的面向對象語言,雖然它的底層(運行時庫)是用C語言開發(fā)的,可是并不依賴于C。因為Java的運行是在運行時庫的支持下進行的,所以運行效率比起可以更接近底層的C/C++來說效率會有所影響,不過Java的類庫采用很好的設計理念設計,非常好用,也非常實用,已經(jīng)成為業(yè)界的一種標準開發(fā)語言。它的跨平臺的特性尤其讓很多開發(fā)者歡迎,你只需要開發(fā)一次就能在所有安裝了Java運行時庫的系統(tǒng)上運行。Java發(fā)展了十幾年了,可以應用領域非常之廣泛,Web開發(fā)有JSP,J2EE,桌面領域現(xiàn)在有JavaFX。

 ?。茫J俏④涢_發(fā)的一種編程語言,語法類似Java,幾乎就是從Java的翻版。運行原理和Java也類似,也是通過運行時庫的支持運行。不過支持的平臺還很有限。JAVA幾乎被所有平臺支持,而C#目前只被Windows和Linux支持,Windows下的支持當然是由微軟自己開發(fā)的,而Linux下的支持則有MONO支持。實際上,MONO也是把C#應用轉化為JAVA應用而已,所以本質上,C#仍然只是被微軟自己的操作系統(tǒng)支持。應用平臺受到限制,是它最大的缺點。

 ?。茫茫膬?yōu)點在于與底層比較接近,可以控制的粒度更加精細,是開發(fā)系統(tǒng)級應用的最佳選擇。關于缺點,我想正是源于其優(yōu)點,因為它們能控制的編程元素粒度精細,所以編程比較困難,煩瑣,容易出錯。

 ?。剩幔觯岷停茫6急容^高級,可以看作高級語言的高級語言,優(yōu)點是開發(fā)容易,但運行效率不如更為底層的C/C++。

  具體選擇使用的時候,可以根據(jù)實際的項目需要選擇。運行效率要求高的,底層控制要求高的用C/C++,否則可以選擇Java或C#;跨平臺的要求高的可以用Java。

  關于跨平臺,C/C++也是很好的語言,因為所有平臺都支持,不同的是,不同平臺支持的實現(xiàn)不同,類庫不同,要編寫跨平臺的程序,需要選擇跨平臺的類庫,如標準類庫,如果標準類庫的支持不夠也只需要附加編寫一個跨平臺的支持類庫。

  幾種語言內容都很多,在這里就不詳細列舉了,要學好每一種都需要花費相當大的精力,祝你能有所成就!
 
        C#與JAVA的相同之處:由于C#與JAVA都是基于C++發(fā)展起來的,因此二者之間具有很多相似之處,具體如下:

  1、C#和JAVA語言的編譯結果是獨立于計算機和編程語言的,可執(zhí)行文件可以在受管理的執(zhí)行

  環(huán)境中執(zhí)行;

  2、C#和JAVA語言都是采用了自動的垃圾回收機制;

  3、C#和JAVA語言都取消了指針操作;

  4、C#和JAVA語言都沒有頭文件;

  5、C#和JAVA語言都只支持單重繼承,要實現(xiàn)與多重繼承類似的功能,必須通過接口來實現(xiàn);

  6、類都是從Object類派生而來,類的對象通過關鍵字new生成;

  7、C#和JAVA語言都支持線程;

  8、C#和JAVA語言都沒有全局變量和全局函數(shù),所有的變量和函數(shù)都屬于某個類所有;

  9、C#和JAVA語言都支持對數(shù)組和字符串邊界的嚴格檢查,不會出現(xiàn)邊界溢出的情況;

  10、C#和JAVA語言都使用“.”操作符,不再使用“->”和“::”操作符;

  11、C#和JAVA語言都將null和bool作為關鍵字;

  12、C#和JAVA語言中所有的值都必須先初始化后才能使用;

  13、C#和JAVA語言中的if語句都不允許采用整數(shù)作為判斷條件;

  14、C#和JAVA語言中的try語句塊都可以后接finally語句塊。

  C#與JAVA的不同之處:

  盡管C#和JAVA有很多相同之處,但是由于二者是兩家不同公司開發(fā)的高級程序設計語言,它們又相互獨立,

  自成體系,各自具有一些自己特有的特點,下面將C#與JAVA之間的不同之處如下:

  1、屬性

  對于那些經(jīng)常使用快速開發(fā)工具,如Delphi或者Visual Basic的開發(fā)人員來說,屬性是一個非常熟悉的概念。

  一般來說,通過getXXX可以讀取屬性的值,而通過setXXX可以設置屬性的值。

  JAVA中比較常見的屬性操作語句: foo.setSize(foo.getSize()+1); label.getFont().setBold(true);

  c#中比較常見的屬性操作語句: foo.size++; label.font.bold=true;

  很明顯,上述的屬性設置方式較JAVA來說更為簡潔,可主讀性也更強。這充分體現(xiàn)了C#簡單的特點。

  JAVA對于屬性的定義:public int getSize(){ return size; } public void setSize(int value){ size=value; }

  c#對于屬性的定義進行了簡化:public int Size{ get{ return size; } set{size=value; }}

  2、index

  C#提供index來給對象加上索引的功能,從而用與處理數(shù)組類似的方式來處理對象,JAVA語言則不支持index

  C#中定義index的典型方式如下:

  public Story this[int index]

  {

  get{return stories[index]; }

  set{

  if(value!=null){

  stories[index]=value

  }

  }

  3、delegate :可以認為是一種類型安全、面向對象的函數(shù)指針。

  C#使有delegate可以通過一個名字訪問不同的函數(shù),它實現(xiàn)和JAVA中的interface類似的功能,但是它比interface更為好用。

  4、event

  C#提供對event的直接支持,它通過delegate和event關鍵字實現(xiàn)對事件的處理。event關鍵字隱藏所有delegate方法,運算符“+=”和“-+”允許程序員自由加入或者刪除時間處理程序。

  5、enum:枚舉用于指定一系列的對象。

  C#通過如下語句來定義和使用枚舉:

  定義:public enum Direction{North,East,West,South};

  使用:Direction wall=Direction.North;

  JAVA不直接支持枚舉,如果要實現(xiàn)和C#相類似的功能,必須先定義一個類

  public class Direction{

  public final static int NORTH=1;

  public final static int EAST=2;

  public final static int WEST=3;

  public final static int SOUTH=4; }

  在定義了Direction類后,JAVA可以通過引用類中的值來使用枚舉:

  int wall= Direction.NOTRH;

  6、foreach語句

  C#提供了標準的for循環(huán),同時還提供了foreach語句(從VB中引入)來循環(huán)處理集合中的元素。

  JAVA遍歷集合中的所有元素的典型處理方式如下:

  while(!collection.isEmpty())

  {

  Object o=collection.get();

  connection.next();

  …

  }

  C#遍歷集合中的所有元素:foreach(object o in collection){…}

  7、統(tǒng)一數(shù)據(jù)類型:

  大多數(shù)的高級程序設計語言都有基本數(shù)據(jù)類型,如整型、浮點類型等。同時,為了更好地滿足實際的需要,對不同的數(shù)據(jù)類型有不同的處理方式,顯然,如果能夠對簡單數(shù)據(jù)類型的處理和對復雜數(shù)據(jù)類型的處理結合在一起,并用一致的方式加以處理的話,無疑會大大提升應用程序設計的效率,增強程序設計的靈活性。

  JAVA語言在處理基本數(shù)據(jù)類型的時候也采取分別處理的策略,但是在基本數(shù)據(jù)類型的基礎上提供了一系列封裝這些基本數(shù)據(jù)類型的類,例如:整型(int)被類Integer所封裝,雙精度浮點(double)被類Double封裝。

  C#提供了一種和JAVA不同的方式來實現(xiàn)數(shù)據(jù)類型的統(tǒng)一。事實上,在c#中,即使是int這樣的簡單數(shù)據(jù)類型在C#內部也是通過一個結構體Int32來實現(xiàn)的,在C#中,可以這樣認為,int只是結構體Int32的一個別名。由于C#中的結構體也繼承自類Object,這樣,Object類中定義的方法,各個結構體也擁有,于是,在C#中可以通過如下的方式來操作整數(shù):int I=5; System.Console.WriteLine(i.ToString());

  8、操作符重載

  通過操作符重載可以用一種比較自然的方式來操縱各種數(shù)據(jù)類型,從而大大提升程序的可讀性和靈活性。C#中的“==”操作符在Object類中進行了定義,在Object中定義的==操作符通過比較兩個值的引用來獲得最后的結果。如果使有和集合相關的類,則必須在這樣的類中實現(xiàn)ICompar接口,這個接口中定義了一個方法CompareTo,該方法返回兩個對象的比較結果,在此基礎上,可以進一步定義各個實現(xiàn)比較的操作符,如

  “>”、“<”、“>=”、“<=”等。事實上,數(shù)字類型(int、long等)可以直接使用這些比較操作符,它們的內部都實現(xiàn)了ICompare接口。

  9、多態(tài)性

  虛似方法提供了多態(tài)性的技持。多態(tài)意味著派生類可以定義一個和基類中同名的方法。盡管JAVA和C#都支持多態(tài)性,但是它們的具體實現(xiàn)方式還是有一定的差別。

  在JAVA語言中,默認情況下,基類的對象可以直接調用派生類中的虛似方法,在C#語言中,基類要調用派生類中的虛似方法必須通過virtual關鍵字來實現(xiàn)。同時,在C#語言中,一個方法要重載基類中的同名方法,還必須通過關鍵字override來實現(xiàn)。在C#中實現(xiàn)多態(tài)的典型程序如下:

  Class B{ public virtual void foo{}}

  Class D:B{ public overried void foo(){}}

  以上只是簡單地比較了C#和JAVA之間的異同,事實上,這二者之間的比較遠不止上面所介紹的內容,要學好這兩種語言,需要經(jīng)過大量的實踐工作,在實踐中區(qū)分開兩種語言的共同點和不同點。
現(xiàn)在的面向對象的語言大多數(shù)都源自C++,java去掉了C++中那些復雜,實用性低的語言特性,達到了一個不錯的平衡。

C#是在java如日中天的時候產(chǎn)生了,因此它不可避免的引入了java中絕大多數(shù)優(yōu)秀的元素。

因此但從語言特性上,兩種語言不會出現(xiàn)一種能實現(xiàn),而一種無法實現(xiàn)的。

即便大型的應用,也是都可以實現(xiàn),只不過可能在特定的方面,一種要比另一種做的好。

就算是所謂的跨平臺。假如微軟能推出linux版本的CLR和.net framework。c#一樣可以跨,因為它和java都是擁有底層托管機制的。

非要說語言差別,下面基本應該全了,不過這些在另一種中都有替代實現(xiàn)方法。
1.屬性:
java中定義和訪問均要用get和set方法,可以不成對出現(xiàn)。
c#中是真正的屬性,定義時get和set必須同時出現(xiàn),房問時用.號即可。不用get,set

2.對象索引
就是對象數(shù)組
public Story this [int index] {

3.C#中,不用任何范圍修飾符時,默認的是protect,因而不能在類外被訪問.

4.因為JAVA規(guī)定,在一個文件中只能有一個public類,而且這個類的名稱必須與文件名一模一樣,這是一個區(qū)別

5.在C#中,它是以Main方法來定位入口的.如果一個程序中沒有一個名為Main的方法,就會出"找不到入口的錯誤".不要把Main寫成main喲

6.C#預定義的簡單數(shù)據(jù)類型比Java多。例如,C#有unit,即無符號整數(shù)

7.忘掉Java中的static final修飾符。在C#中,常量可以用const關鍵詞聲明
C#的設計者還增加了readonly關鍵詞,readonly域只能通過初始化器或類的構造函數(shù)設置
8.公用類的入口點:c#是可以對Main進行重載(java中是main),允許有int返回值和空參數(shù)的Main

9.在Java中,switch語句只能處理整數(shù)。但C#中的switch語句不同,它還能夠處理字符變量。請考慮下面用switch語句處理字符串變量的C#代碼

10.C#沒有>>>移位操作符

11.goto關鍵詞:
Java不用goto關鍵詞。在C#中,goto允許你轉到指定的標簽。不過,C#以特別謹慎的態(tài)度對待goto,比如它不允許goto轉入到語句塊的內部。在Java中,你可以用帶標簽的語句加上break或continue取代C#中的goto。

12.int[] x = { 0, 1, 2, 3 };
int x[] = { 0, 1, 2, 3 };
但在C#中,只有第一行代碼合法,[]不能放到變量名字之后。

13.與Java不同的是,C#允許為名稱空間或者名稱空間中的類指定別名:
using TheConsole = System.Console;

14.在Java中,包的名字同時也是實際存在的實體,它決定了放置.java文件的目錄結構。在C#中,物理的包和邏輯的名稱之間是完全分離的
.NET中包的實體稱為程序集(Assembly)。每一個程序集包含一個manifest結構。manifest列舉程序集所包含的文件,控制哪些類型和資源被顯露到程序集之外,并把對這些類型和資源的引用映射到包含這些類型與資源的文件。程序集是自包含的,一個程序集可以放置到單一的文件之內,也可以分割成多個文件。.NET的這種封裝機制解決了DLL文件所面臨的問題,即臭名昭著的DLL Hell問題。

15.在Java中,java.lang包是默認的包,C#中不存在默認的包

16.C#中的訪問修飾符與Java中的基本對應,但多出了一個internal。簡而言之,C#有5種類型的可訪問性,如下所示:

public:成員可以從任何代碼訪問。
protected:成員只能從派生類訪問。
internal:成員只能從同一程序集的內部訪問。
protected internal:成員只能從同一程序集內的派生類訪問。
private:成員只能在當前類的內部訪問。

17.由于C#中不存在final關鍵詞,如果想要某個類不再被派生,你可以使用sealed關鍵詞

18.與Java不同,C#中的接口不能包含域(Field)。
另外還要注意,在C#中,接口內的所有方法默認都是公用方法。在Java中,方法聲明可以帶有public修飾符(即使這并非必要),但在C#中,顯式為接口的方法指定public修飾符是非法的。例如,下面的C#接口將產(chǎn)生一個編譯錯誤。

19.C#中的is操作符與Java中的instanceof操作符一樣,兩者都可以用來測試某個對象的實例是否屬于特定的類型。在Java中沒有與C#中的as操作符等價的操作符。as操作符與is操作符非常相似,但它更富有“進取心”:如果類型正確的話,as操作符會嘗試把被測試的對象引用轉換成目標類型;否則,它把變量引用設置成null。

20.C#仍舊保留了C++的內存手工管理方法,它適合在速度極端重要的場合使用,而在Java中這是不允許的

21.在C#中,所有的異常都從一個名為Exception的類派生

22.枚舉器即enum類型(java無),把它作為一個變量值的類型使用,從而把變量可能的取值范圍限制為枚舉器中出現(xiàn)的值。

23.結構(Struct)與類很相似,而結構是一種值類型,它存儲在棧中或者是嵌入式的,結構可以實現(xiàn)接口,可以象類一樣擁有成員,但結構不支持繼承

24.屬性聲明語法的第一部分與域聲明很相似,第二部分包括一個set過程和/或一個get過程

25.傳值方式:
在java中簡單數(shù)據(jù)類型的值傳參時,都以傳值方式;
在c#中如果加ref則會以引用的方式傳值(方法內部改變該參數(shù),則外部變量一起跟著變);
加out與ref基本相同,但out不要求參數(shù)一定要初始化.

26.c#保留了指針。unsafe

27.代理:代理(delegate)可以看作C++或者其他語言中的函數(shù)指針
代理用來封裝可調用方法。你可以在類里面編寫方法并在該方法上創(chuàng)建代理,此后這個代理就可以被傳遞到第二個方法。這樣,第二個方法就可以調用第一個方法。
代理是從公共基類System.Delegate派生的引用類型。定義和使用代理包括三個步驟:聲明,創(chuàng)建實例,調用。代理用delegate聲明語法聲明。
 

C#、Java之比較 很多人說C#是微軟用來和Java抗衡的武器,因為二者在很大程度上有著驚人的相似

,盡管如此,兩者不同的地方也很多,所謂“于細微處見差異”。那么兩者的相似和區(qū)

別都在什么地方呢?我們從今天開始,會從各個角度來對比C#和Java的特點,希望能對

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

2、C#和Java
        下面簡單地把C#和Java的相似處列出來,雖然在這里我們重點討論的是C#和Java的 
不同點,但是了解一下二者的相同之處也是很有必要的。 
二者都編譯成跨平臺的、跨語言的代碼,并且代碼只能在一個受控制的環(huán)境中運行
自動回收垃圾內存,并且消除了指針(在C#中可以使用指針,不過必須注明unsafe 關鍵字)都不需要頭文件,所有的代碼都被“包(package)”限制在某個范圍內,并且因為沒有頭文件,所以消除了類定義的循環(huán)依賴所有的類都是從對象派生出來,并且必須使用New關鍵字分配內存用對象加鎖的方式來支持多線程都具有接口(interface)的概念內部類繼承類的時候不會以某種特定的訪問權限來繼承;沒有全局函數(shù)或者常量,一切必須屬于類;數(shù)組或者字符串都自帶長度計算和邊界檢查;只使用“.”操作符,沒有“->”和“::”;"null”、“boolean”和“bool”成為了關鍵字;任何變量均在使用前進行初始化;  不能使用整數(shù)來返回到if條件語句中,必須使用布爾值;“Try”模塊后可以有“finally” ;C#JAVA之比較(圖表說明)
 

 

C#

JAVA

目標

提供易用、面向對象、跨平臺

提供易用、面向對象、跨平臺

GC

豐富的類庫

中間語言

IL

JVM

自動生成文檔

(/out生成XML文檔)

有(javadoc生成HTML文檔)

值類型

都是對象派生的

基本類型是專門的

跨平臺

公共語言運行時

虛擬機

操作符重載

結構類型

委托和事件

內置的委托和事件

接口和內部類定義

傳遞參數(shù)

值、引用傳遞

只能值傳遞

屬性

支持

不支持

枚舉

不安全模式

JNI可達到同樣效果

分度器

拋出異常

數(shù)組

規(guī)則、不規(guī)則均可

不規(guī)則

接口

支持

支持

Switch

可用表達式

只能整數(shù)

Foreach

只能用forwhile

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
自從互聯(lián)網(wǎng)出現(xiàn)以來,Java就成了許多開發(fā)者的首選.而許多C++開發(fā)者在較短的時間內轉移到了Java開發(fā)者的隊伍中來. Java成功的開發(fā)和實現(xiàn)了許多高質量的多線程動畫, 游戲, 以及分布的應用程序. 更重要的是,Java 語言是完全平臺無關的. 

被稱作Apllets(小應用程序)的Java程序在被下載到本地以前必須首先通過安全認證,這樣就避免了任何病毒鉆入用戶的計算機的企圖. 許多新的改進,諸如旋擺軟件包(swing package), Java2D API, 連網(wǎng)軟件包(java .net)在最初的Java開發(fā)包發(fā)布以后被加進了這種語言里. 從Sun公司發(fā)布Java以來,它的許多競爭對手開發(fā)了這種熱門語言的替代品,一些公司甚至在兩年以前就開始了. 

現(xiàn)在一家無需更多介紹的公司--微軟已經(jīng)發(fā)布了一種新的叫做微軟.NET的技術. .NET家族的一種主要的語言是C#或者說C-sharp. 這種語言是從Java/C++繼承而來的. 從我的對C#的六個月的技術上的經(jīng)驗來說,我覺得C#或多或少與Java是相似的.但是C++的許多功能,比方說操作符重載(它在Java中已經(jīng)被移去了)還存在于C#中. 

Java程序能夠在安裝了Java虛擬機或者JVM的任何平臺上運行.但是.NET程序的平臺要求安裝了通用語言運行庫或者稱做CLR. 它是所有.NET語言運行所需的運行庫.所以一種.NET語言能夠調用另一種.NET語言寫成的模塊和函數(shù). 更進一步的說,如果你學習了種像C#之類的語言,那么你就很容易學習另一種.NET語言因為所有的.NET語言遵循微軟所謂的.NET Framework(架構). 這種架構包括了編寫和安裝健壯的.NET應用程序所必需的類庫.使用.NET你可以通過ASP.NET進行服務器端的編程,這點非常像JAVA中的servlets. 

就象Java中的Applets, C#引入了WinForms 和WebForms的概念.使用WinForms你可以設計基于Windows的應用程序而使用WebForms你能夠開發(fā)Web應用程序. 這點可以要么通過C#編程或者是使用Visual Studio.NET這樣的開發(fā)環(huán)境工具來實現(xiàn). 它包含了Visual C#,使用Visual C#你可以非常容易的編寫C#應用程序. 

在我們使用Visual C++編程的時候,WinForms幾乎就是win32程序.用C++來開發(fā)這些程序是可能的.但是VC++給我們提供向導來簡化我們的開發(fā)過程.現(xiàn)在Visual C#也在做同樣的工作.因此如果你已經(jīng)是一個VC++的程序員了,那么你最好試一試VC#. 
Java程序和C#程序的比較 

我們應該比較一下用Java寫成的程序和C#的有什么不同. 我們將討論兩個程序間主要的不同點. 

Hello Java 程序 

class Hello { // 類聲明 
public static void main(String args[]) { // main 方法,入口點 
System.out.println("Hello Java"); // 向控制臺輸出Hello Java 
} 
} 

Hello C# 程序 

using System; // 調用System命名空間 
class Hello { // 類聲明 
public static void Main () { // main 方法, 入口點 
console.writeLine("Hello C#"); // 向控制臺輸出 Hello C# 



在Java中, lang軟件包是自動引入的.在簡單的程序里沒有必要引入這個包.但是在C#中,我們不得不在所有的程序里調用System命名空間. 請記住控制臺是System命名空間下的一個類. 試著運行一下上面的程序并查看它們的輸出結果. 


Main方法 
Java:你有可能編寫一個沒有main方法的Java程序,只要這個類是用來作為父類.但是只有類中包含有正確的Main方法的時候程序才能運行. 

C#:沒有正確的Main方法就不可能編譯C#源程序.如果main方法缺失了,那么編譯器就會顯示一個錯誤消息:程序'filename.exe'沒有定義入口點. 


繼承 
Java 和C#都不支持多重繼承而且都提供接口的概念作為多重繼承的替代品.但是C#在接口中包括了更高級的內容.請在本文末找出題為新增加的特點的內容. 


操作符和控制流語句 
Java中出現(xiàn)的所有諸如算術,邏輯,自增和自減等操作符都可以在C#中找到. 而Java中的像if, else, if-else, for, do-while, while等控制流語句C#統(tǒng)統(tǒng)支持. 但是C# 增加了C++中流行的goto語句. 


異常處理 
在C#中你可以重用try, catch, finally, throws 語句處理運行時錯誤(通常也叫做異常).C# 中的異常處理過程除了一些小的不同以外幾乎與Java完全相同. C#中System.Exception命名空間是所有異常類的基類. 

多線程 
C#中多線程的應用比起Java來要容易得多.我們可以使用Monitor 和 Mutex類同步線程. 

新增特點 
索引,屬性和代理是C#中的新概念.索引幾乎與Java中的向量相同. 對其新特點的完全的討論已經(jīng)超出了我們的范圍.但是我將盡量在這個網(wǎng)站的其它地方解釋它們. C#引入了Java所沒有的操作符重載的概念.但是Java和C#都支持方法重載. 

讓我們回到對接口的討論,我們能夠驗證包括在接口中的方法是否是使用is 和 as 操作符實現(xiàn)的.當我們實現(xiàn)接口的時候能避免命名沖突.你甚至可以將兩個接口結合到一個中來,并在類中實現(xiàn)這個復合的接口,如下面的代碼所示: 
using System; 
public interface First { 
void A(); 
void B(); 
} 
public interface Second { 
void C(); 
} 
public interface Combined: First, Second { } 

class Combineimple: Combined { 
// 這里是程序代碼 
// main方法 
} } 

而且C#在顯示編譯錯誤的時候還顯示它們的錯誤代碼.你可以搜索與SDK有關的在線文檔尋找和這個錯誤代碼有關的內容并找出這個錯誤發(fā)生的原因的細節(jié). 

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多