很多游戏开发者都是由于Unity而“被迫”使用C#的。但用过一段时间,就会由衷赞叹:真香。如果有些同学没感觉到很香,有可能是没有仔细和其它语言比较:)
一、C#良好兼容了值类型/引用类型,在发展中逐步解决了其他高级语言没解决好的问题纵观主流语言,C语言在语法上是以值类型为基础,借助指针实现引用类型;而Python/Lua等语言,是以引用类型为基础。
而C#很好得总结了前人的经验,在基础语法上就区分了值类型和引用类型。对初次接触编程的同学来说这一点容易造成学习障碍,但是只要掌握了它,就会给实际工作带来极大便利。
C#与Java都起源于C/C++语言,他们在面向对象方面有许多相似之处。除了JavaJVM和C#.NETCLR有许多相同结构上的相似性之外,他们各自的开发团队都有各自的发展方向,他们 我们并不想纠结于某一个语言比另一个语言好,我们只想罗列出C#开发者能用到而Java中没有的那些特性而已。
1、LINQ
LINQ(Language-IntegratedQuery,语言集成查询)于年引入到C#,以帮助开发人员从各种数据源查询数据要在LINQ中执行查询操作,首先获取数据库,然后创建查询,最后执行查询。在LINQtoObject查询中,这可能仅像一样代码一样简单,而不是为每个循环编写嵌套的复杂迭代。
2、Struct
C#中的结构体类似于类。实际上,一个struct甚至可以被认为是一个“轻量级类”,因为它可以包含构造函数、常量、方法等等。一个结构体和一个类之间最大的区别在于结构是值类型,而类是引用类型。
3、async/await
在一段代码中调用async,或者更明确地调用方法,这个方法都会在另一个线程上执行,不会阻塞当前线程。当代码运行到await命令的时候,它会继续运行(await的语句)。如果这时async代码还没有完成,那么执行中的程序会返回到调用点。
4、base关键字:省的总是写基类的类名,而C++中只有微软提供了__super可以表示基类,不幸的是linux上并不识别这东西
可以直接使用Type类型作为变量,从而根据Type创建对象.C++就只能通过工厂模式找到对应的工厂然后创建对象,有点不方便
C#语言最重要的三大类成员分别是存储数据的字段,加工数据的方法和通知其它类的事件,这样的组织形式使精密的C#程序如同一家模块化工厂,原料(数据)通过事件这一“传送带”在车间(类)间传递,车间使用字段作为自己的临时库房以存放原料和辅料,而不同车间的不同方法则分别负责原料在本车间内的加工工序
基本语言特性我不说了,大家说的都很全面。我只能结合我的工作说一下。首先就是我这里服务器客户端全部C#,核心逻辑代码两边通用,省时省力不容易出错。而且说实话,高手用C#写的服务器,还是巨块巨稳定的。
再次就是C#要感谢unity3d的选择和不离不弃,没有unity3d,C#真走不了这么远。unity3d的IL2TPP,让你用C#写代码,发包时替你编译成本地代码,完全就是C#的工作效率加本地代码的运行效率,值类型我有,指针我也有,写得够叼unity3d编译出来运行效率奇高。我还要啥c++自行车?
转载请注明:http://www.0431gb208.com/sjsbszl/4624.html