C# & C++实践中的区别总结

用Unity3D C#开发游戏客户端,一眨眼,发现竟然也用了8年了。2018年10月开始,将之前C++的底层代码封装出C#接口,游戏服务器也开始全面得用C#开发。Windows上开发,生成DLL,原封不动传到Linux上,用.net core直接跑起来。

因为语法原因,C#开发效率比C++高太多太多了。C#主要有如下优点:

委托,用起来就像动态语言一样方便,C++要借助std::function & std::bind;

委托传递参数的方便性,这个不知道该怎么表述;

多态,基类的构造函数里也可以调用虚函数;

数据类型,short, int, long位数是确定的;

static类&成员函数,用起来特方便,大部分情况下,都不须要用Singleton;C++用个静态变量的时候,感觉蛮诡异的;

using引入其他模块的方式,不用考虑代码的目录结构,调整代码目录结构,修改类名之类的太方便了;相对来说,#include方式就反人类了;

属性用起来非常简洁自然;

反射,可以直接用;

泛型运行时功能比C++强大,可以写下面这样的代码:

        public override T Obj(Ot type)
        {
            T obj = null;
            switch (type)
            {
                case Ot.ItemBag:
                    obj = _itemBag as T;
                    break;
                case Ot.ItemHash:
                    obj = _items as T;
                    break;
                case Ot.HeroHash:
                    obj = _heroHash as T;
                    break;
            }

            if (obj == null)
                obj = base.Obj(type);

            return obj;
        }

C#接口也需要Add Refrence(链接)才能用;C++接口仅仅是编译时的概念,这点C++方便一些;

另外,C#标准库比较完整规范。

 

 

 

 

你可能感兴趣的:(C# & C++实践中的区别总结)