我如今發現不少人對C#還存在很大的誤解,例如C#是徹底封閉的,C#不能跨平臺,C#性能不好,C#不支持指針等等,持以上觀點的人很是多,甚至最近看到的國內某機構對開發語言的統計中還寫着C#不跨平臺,不開源,因此想在此普及一下常識。
1.C#是徹底開源的,不但開源,並且微軟開源的庫都是基於MIT許可證的,也就是說,你能夠無償使用並修改代碼,修改後能夠閉源,只需保留做者信息便可,這能夠說是最寬鬆的開源許可
2.C#是徹底能夠跨平臺的,mono如今已經很是成熟,隨着去年微軟對.net的全面開源,mono已經採用了大量微軟官方的源碼,徹底實現最新的.net framework4.6,功能很是全面。在遊戲領域Unity3d,移動開發領域Xamarin,都是基於mono的,都是徹底跨平臺的,Unity3d更是支持26種操做系統,如今Linux上部署asp.net網站也更加方便,連mono都不須要安裝就能夠運行。並且跨平臺不止mono,還有微軟本身的.net core,Unity3d更是開發出了IL2CPP這種逆天的東西,之後C#均可以摒棄虛擬機直接運行在全部平臺上了,因此說跨平臺是確定的,並且跨得很好!
3.C#的性能也是很是好的,我專門作過測試,若是對比基礎數學運算與C++徹底同樣,圖形方面也能達到C++的70%,看.net庫底層代碼是大量的指針和原生函數調用,性能天然沒問題,關於內存佔用,你用了其餘虛擬機語言後再來評論C#不遲
4.總有人問C#調用C++dll的各類問題,尤爲是類型轉換上,我想說,C#是支持指針的,你C++怎麼寫,C#就怎麼寫便可,這有什麼難的嗎?並且不少須要高性能的地方,也能夠用指針實現,有些地方用了指針後性能提高能超過1000倍,因此指針的使用也很重要的,但居然仍是有這麼多人不知道C#有指針的存在!
5.單獨說下Xamarin,如今Xamarin已經徹底開源免費,人們開始想嘗試使用Xamarin,但總以爲資料少,甚至有人說只能搜到個helloworld的示例,其餘都沒有,若是開發比較複雜的app就不行了,但我想說,首先Xamarin官網上有大量的資料,很是全面,IO,數據庫,網絡通訊,界面開發等等都有很詳盡的教程,nuget上60多萬個庫,足夠你作出一個像樣的APP,其次,Xamarin是提供給你直接調用java和OC方法的方式的,使用也很是簡便,再次,你真的須要某些特殊的東西,搜索Xamarin找不到相應的解決方案(這裏拿android舉例),那麼好,直接搜android的解決方案便可,因爲android的全部API Xamarin都是實現了的(早在4月8日就已經支持Android N了),因此你直接把要用的java代碼粘過來便可,類庫名稱,函數名稱,參數類型,各種東西都沒變,只有不多的一部分語法,例如屬性和foreach等須要稍微改改,就能夠直接用java的代碼,界面就更不用說了,惟一須要變的就是.xml改成.axml,剩下的都不用改,我真心想知道有什麼是不能作的呢?Xamarin只不過給你多增長了一套C#的API,例如你既能夠用System.IO.StringBuilder也能夠用Java.Lang.StringBuilder,對於開發來講與用java作Android原生開發沒有任何區別,因此說Android的資料能夠直接拿來用,而Xamarin只是讓你多了一種選擇而已,在此之上業務邏輯部分iOS與android能夠通用,甚至用Xamarin.Form讓你的界面也能夠跨平臺
說了這麼多,我只但願人們對C#的認識可以真正的改變,仍是那句話,C#如今能夠開發除了系統驅動之外的任何程序,在各個領域都有很是成熟的解決方案,而且早已全面開源!java