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

分享

C#與C 對(duì)比總結(jié)之一

 alexwhu 2006-10-23

C#與C++對(duì)比總結(jié)之一

by Minghui Li

1.         常量總是靜態(tài)的,不必也不允許使用static

2.         C#中的引用。C#中非內(nèi)置類型或者自定的Class,都是引用類型,要?jiǎng)?chuàng)建這樣的對(duì)象必須使用new,和C++有區(qū)別。

3.         C#中的輸出語句:console.WriteLine(…);

4.         string類型:它雖然也是引用類型,但是和普通的引用類型有區(qū)別。如果兩個(gè)string對(duì)象指向相同的內(nèi)存,當(dāng)修改其中一個(gè)string,那么回創(chuàng)建一個(gè)全新的string,而另一個(gè)string不會(huì)發(fā)生變化。

5.         @的作用:C#中采用和C/C++中相同的轉(zhuǎn)義字符,比較麻煩,可以在字符串前面加上@,表示字符串中的所有字符都看作是其原來的含義,如:@”C:\ProCShap\First.cs”

6.         C#中的if語句中的條件必須是bool值,不能像C++中可以是整形

7.         C#中有一種特殊的循環(huán):foreach

8.         C#中的枚舉類型和C/C++中的也有區(qū)別:訪問枚舉值的時(shí)候需要采用成員訪問的方式。另外可以獲得枚舉值的字符串表示(ToString),也可以從字符串獲得枚舉值(Enum.Parse())。

9.         C#中數(shù)組的聲明和C++中的有區(qū)別:

§           Int[] intergers;       // C#

§           Int intergers[];       // C++

10.     C#中數(shù)組的初始化和C++中的區(qū)別:

§           Int[] intergers = new int[32]; // C#

§           Int intergers[32];                  // C++

11.     C#中的所有數(shù)組類型都是引用類型,和C++中的類似,因?yàn)?/span>C++中的數(shù)組類似一個(gè)指針。

12.     C#的主程序入口:Main函數(shù),其必須使類或者結(jié)構(gòu)的靜態(tài)成員函數(shù)。

13.     控制臺(tái)IO

§           Console.Read()

§           Console.ReadLine()

§           Console.Write()

§           Console.WriteLine()

§           C#可以像C一樣格式化輸出

14.     C#中的預(yù)處理器指令比C++的強(qiáng)大

15.     函數(shù)參數(shù)的問題:

§           當(dāng)函數(shù)的參數(shù)是一個(gè)引用類型

§           當(dāng)函數(shù)的參數(shù)是一個(gè)值類型,但想讓其像引用類型一樣工作,需要使用ref關(guān)鍵字聲明該函數(shù)(類似于C++中的&語法):

Void SomeFunc(ref int i);

調(diào)用函數(shù)時(shí),該參數(shù)也要使用ref關(guān)鍵字(不同于C++):

SomeFunc( ref i );

§           out關(guān)鍵字:作為輸出參數(shù),被引用的變量不需要被初始化。使用方法同ref。

16.     C#不支持默認(rèn)參數(shù),不同于C++

17.     類中數(shù)據(jù)成員的默認(rèn)初始化值為0或者false。不同于C++的隨機(jī)初始化。

18.     如果提供了帶參數(shù)的構(gòu)造函數(shù),編譯器不會(huì)自動(dòng)生成默認(rèn)構(gòu)造函數(shù)。

19.     靜態(tài)構(gòu)造函數(shù):C#中特有的,只執(zhí)行一次,不能有參數(shù),主要目的是為靜態(tài)字段或者屬性初始化。.net沒有確保類的靜態(tài)構(gòu)造函數(shù)何時(shí)執(zhí)行,但一般是在第一次調(diào)用類的成員之前執(zhí)行。可以與無參數(shù)的實(shí)例構(gòu)造函數(shù)共存。


20.     構(gòu)造函數(shù)初始化器,類似于C++中的初始化列表,但有很大區(qū)別。C#的構(gòu)造函數(shù)初始化器只能調(diào)用其它的構(gòu)造函數(shù)(如this,或者base),而C++的可以初始化數(shù)據(jù)成員。

21.     C#的只讀字段

§           是用readonly關(guān)鍵字修飾的字段。C++中沒有。

§           只讀字段不同于const字段,只讀字段可以是實(shí)例字段,可以在實(shí)例初始化函數(shù)中初始化賦值,而在其它任何函數(shù)中不能改變。

§           當(dāng)然只讀字段也可以是靜態(tài)字段。

22.     C#中的結(jié)構(gòu)不同于C++。

§           C++中的結(jié)構(gòu)和類時(shí)等同的。

§           C#中的結(jié)構(gòu)是值類型的,一般是比較小的數(shù)據(jù)結(jié)構(gòu),存儲(chǔ)在棧中。但是可以使用new運(yùn)算符。

§           C#中的結(jié)構(gòu)不支持繼承。

§           不允許定義無參數(shù)的構(gòu)造函數(shù),其是編譯器默認(rèn)提供的,不允許被覆蓋。

23.     System.Object中的方法:(感覺比較有用,但還不知道具體怎么使用?)

§           string ToString( )

§           Int GetHashTable()

§           Bool Equal(object obj)                                // 比較兩個(gè)對(duì)象是否相等

§           Bool Equal(object objA, object objB)            // 同上

§           Bool ReferenceEquals(object objA, object objB)//比較兩個(gè)引用是否指向同一個(gè)對(duì)象

§           Type GetType()      // 得到對(duì)象類型的詳細(xì)信息

§           Object MemberwiseClone()   // 進(jìn)行對(duì)象的淺表復(fù)制???

§           Void Finalize() // .net版本的析構(gòu)函數(shù)

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多