1.????C#不支持多重繼承奥额,這是與C++明顯區(qū)別的地方愉昆,說(shuō)真的多重繼承有時(shí)候用起來(lái)挺麻煩的薄疚,可能微軟怕你用不好吧碧信,不給你提供了赊琳,但我個(gè)人覺(jué)得沒(méi)有了多重繼承感覺(jué)有點(diǎn)可惜。
2.????在標(biāo)準(zhǔn)的C#安全代碼中不支持指針類型的操作音婶,然而慨畸,你卻能在微軟所謂的“非安全代碼”中操作指針類型對(duì)象。
3.????C#中所有對(duì)象都只能通過(guò)關(guān)鍵詞“new”來(lái)創(chuàng)建衣式,C++的“類名_對(duì)象名”方式在C#中變?yōu)槁暶饕粋€(gè)引用寸士。呵呵,萬(wàn)物皆對(duì)象碴卧,連常見(jiàn)的數(shù)據(jù)類型都變?yōu)閷?duì)象了弱卡,JAVA味道很濃。
4.????數(shù)組變?yōu)榱祟愖〔幔虼藢?duì)于數(shù)組里的元素婶博,.NETFramework直接提供了一系列的操作:查找、排序荧飞、倒置……
5.????在C#里面凡人,數(shù)組的元素都是存放在托管堆里面,比起C++的在內(nèi)存里不確定位置申請(qǐng)一塊連續(xù)空間要安全得多叹阔。
6.????C++的switch后跟參數(shù)必須是int型挠轴,而C#卻允許string型,這點(diǎn)改進(jìn)覺(jué)得真的是比以前方便多了耳幢!
7.????C#會(huì)禁止所有switch..case語(yǔ)句的失敗情形岸晦,除非case語(yǔ)句后是空格,否則執(zhí)行了前一個(gè)case語(yǔ)句就算沒(méi)有break也會(huì)停止執(zhí)行后面的case語(yǔ)句睛藻。
8.????在異常處理上启上,C++允許拋出任何類型,而C#中規(guī)定拋出類型為一個(gè)派生于System.Exception的對(duì)象店印。
9.????C++的宏在C#中被拋棄了很多冈在,而且也不建議使用,因此很少見(jiàn)按摘。
10.??C++的模板在C#里沒(méi)有了讥邻,但在C#中我們找到了能完成模板任務(wù)的更鋒利的武器:委托。
11. ??C++的全局變量這一概念沒(méi)有了院峡,C#和JAVA類似,要把所有東西都放在類里面系宜,還建議使用命名空間包含起來(lái)照激。
12.???C#可以在定義類的時(shí)候直接給屬性賦值,而C++這么做卻會(huì)編譯出錯(cuò)盹牧。
13.???C#里有靜態(tài)構(gòu)造函數(shù)一個(gè)概念俩垃,這個(gè)構(gòu)造函數(shù)只執(zhí)行一次励幼,因此能夠保證一些靜態(tài)成員只被初始化一遍。
14.???C#有自動(dòng)垃圾收集機(jī)制口柳,防止內(nèi)存泄露苹粟,把C++程序員從繁重的內(nèi)存管理上解放出來(lái)。
15.????更強(qiáng)的類型轉(zhuǎn)換保護(hù)機(jī)制跃闹,比如說(shuō)把float轉(zhuǎn)成uint嵌削,直接轉(zhuǎn)換0.35會(huì)變成0.34,是因?yàn)槎M(jìn)制無(wú)法表示這樣的數(shù)字望艺,使用System.Conver里的方法苛秕,可以安全地把類型安全轉(zhuǎn)換過(guò)來(lái)。
16.????委托與事件找默、裝箱與取消裝箱艇劫、Web Services……一大堆C++沒(méi)有的新東西,我感覺(jué)是做大型項(xiàng)目方便了管理惩激,也容易擴(kuò)充店煞,但做起小型項(xiàng)目,由于是編譯成IL代碼的风钻,運(yùn)行需要.NET Framework SDK支持顷蟀,效率是個(gè)問(wèn)題,不利于做那些對(duì)運(yùn)算速度和內(nèi)存消耗要求高的項(xiàng)目魄咕。