我如今发现不少人对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