• C# 2018.9.17


    C#的优点:
    1,不会有运行时崩溃,解决了C++的痛点一,难预防,难查错
    2,使用文件不需要包含进来,只需要using namespace即可,解决了C++的痛点二,包含复杂,路径复杂,编译复杂
    3,编译速度极快,解决了C++的痛点三
    4,库代码易懂,智能提示好。
    std::map<int, <error-type>, std::less<int>, std::allocator<std::pair<const int, <error-type>>>>

    5,对于中小应用极其方便,因为内存托管
    6,完善,丰富,易用,高效的各种功能库:线程,网络,数据库,窗口编程库
    7,强大的语言新特性:lambda,委托,正则,局部函数,闭包,linq,
    6,简洁,易用,功能全,开发效率高,是生产利器
    7,有U3D光环加成,微软亲儿子,非常适合用于游戏开发,兼具了运行效率与开发效率,兼合了C++,LUA的功能

    readonly : 运行时常量,仅能在定义时初始化或在构造函数中被初始化,
    它仅指对象本身不能被改变,但对象内部数据可以被改变,这是不同于C++常引用的地方,C#没有常引用类似的功能
    const: 编译时常量

    as 与强制类型转换:
    as 只能用在类或结构上,有父子关系
    as 要比强制类型转换安全,效率高。为什么效率高?try-catch

    如何比较两个变量的内存地址是否相同? referenceEquals

    静态构造函数,
    1,在类的静态变量第一次被使用时调用。
    2,不能直接被调用
    3,静态构造函数必须无参

    静态构造函数机制实现线程安全的单例:
    //方式一,
    public static CSingleTest inst;
    static CSingleTest()
    {
    inst = new CSingleTest();
    }
    CSingleTest()//这里有什么用???
    {
    Console.WriteLine("constructor");
    }

    //方式二
    public static CSingleTest inst = new CSingleTest();
    static CSingleTest()
    {
    Console.WriteLine("static constructor");
    }
    CSingleTest()//这里有什么用???
    {
    Console.WriteLine("constructor");
    }

    线程同步机制:对象锁


    class safetySingletonByLock
    {
    object _lock = new object();
    public static safetySingletonByLock inst;
    safetySingletonByLock()
    {
    if(null == inst)
    {
    lock (_lock)
    {
    if (null == inst)
    inst = new safetySingletonByLock();
    }
    }
    }
    }

    结构体相等比较,默认情况下是如何比较的??? 内容对比,如何验证? 随着数据复杂性提升而变慢,而引用类型则不会这样
    为什么不是地址比较???? 值类型

    构造函数可以被主动调用
    子类的每个构造函数默认都会调用父类的无参构造函数
    一个构造函数最多只能调用一个构造函数,这个被调用的构造函数可以是本类的,父类的

    根据以上原理,常见的问题:
    1,父类仅有带参构造函数时,子类构造函数必须主动调用父类构造函数
    class xbase{
    protected xbase(float fx){}
    }
    class child : xbase {
    public float fx;
    public xbase() : base(1)//必须调用父类构造函数
    ,this(2)//error,只能调用一个构造函数
    ,fx(2); //error, C++初始化列表方式不再支持
    {
    }
    public xbase(float fx){}
    }

    泛型问题

  • 相关阅读:
    Python __str__() 方法
    vim快捷键大全
    Python @函数装饰器及用法
    ImportError: No module named typing报错
    centos7安装pycharm2018专业版及破解
    windows下使用pycharm开发基于ansible api的python程序
    一个Windows系统下同时安装Python2和Python3
    django models def __str__(self)
    django model中的class Meta
    nmap命令详解
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/9662923.html
Copyright © 2020-2023  润新知