由于c#是由設計.net本身的人設計出來的,所以c#才是.net上最一流的語言。
實際上,已經有一百多萬行c#代碼用于實現.Net class framework。
要發揮出.net平臺全部的效能,只有c#才是首選。
1,switch語句可以用來測試string型的對象
這在c,c++,java等其他各主流語言中都是不可以的,唯獨c#可以。
例如string a="haha";
2、多維數組
這也是c#的特色,像java也沒有多維數組,只有數組的數組。
c#中不但有數組的數組,也有多維數組。
數組的數組的特點是(拿二維為例),每一行的元素個數可以不同。
比如int [][] c=new int[2][];
3,as與is
java中也有類似于is的語法,用于在運行時判斷一個對象的類型,叫做instanceof。
c#中就是一個is,判斷o是不是一個string: o is string
as則是一個很窩心的功能,它首先對這個對象進行判斷是否是某種類型,如果是就進行類
型轉換,如果不是,就返回null。
如: o as string
4,foreach語句
java5以后for語句就多了foreach功能,這也許就是因為之前沒有,而c#有,使得自己非常嫉妒,所以馬上給添上了。
c#中的foreach功能是非常方便的。
例如遍歷一個數組
不得不承認,我的偶像Anders實現出來的c#確實非常優秀。
我把索引器和Property歸為一類。
都是從Class中讀取某種屬性,如果知道java的POJO的人肯定知道,java bean的標準形式
就是一堆private屬性,然后一個getter,一個setter,這是標準,但實現確實使用的普通成員方法。
c#則更絕,它直接在Class中聲明一個單獨的field,然后在語法中直接設計了getter和setter的簡化寫法,這就是我們熟知的Property。
如:
索引器就是給幾個參數,返回一個屬性。
如:
這點c#讓我有點失望,對于非Ref型就是const,對于Ref型就是readonly。
而在java中,一個final就行了。當然對于不可繼承的類,c#又有一個關鍵字sealed,雖然這讓程序的含義更明確,但確實也多記了好幾個關鍵字。
7,delegate型別
說實話,這種奇怪的語法還是第一次見到,說跟C++中重載operator()的功能像吧,又不是太像。
總而言之,覺得它實現可能就是記下一堆同類型的函數指針,然后可以依次調用而已。
首先需要聲明一個delegate型別,注意是型別而不是對象。
如public delegate void Action();
注意既然是型別,那就跟enum,class是同等的,注意型別能夠出現的位置。
然后我們就可以定義這種型別的對象來使用了。
這種delegate型別對象還有點特殊,它可以使用運算符+=和-=來增加或者減少本對象所代
理的函數集,當然還有更多的方法用來看當前我代理了多少個函數之類的。
新聞熱點
疑難解答