• C#基础


    1.对“引用类型保存在堆上,值类型保存在栈上”的纠偏

        第一部分,引用类型的实例总是在堆上创建的,这个目前是这样,不排除以后会在栈上创建。

        第二部分,变量的值是在他声明的位置存储的。如果是一个变量,那么它是在栈上,如果是某一个对象的变量呢,那么他一定是和对象的其他数据在一起,也就是在堆上。只有局部变量(方法内部声明的变量)和方法参数在栈上。

    2.装箱和拆箱

      把值类型改变为引用类型,是装箱,把引用类型变为值类型是拆箱。对于引用类型的变量,他的值永远是一个引用。

      例如: int i=5;

                object t=i;

                 i=6;

                 int j=(int)t;

        i值类型的变量,t是引用类型的变量。t的值必须是一个引用,而i的值不是一个引用,那么实际发生的装箱就是运行时在堆上创建一个包含值为5的对象,也就是t的值是i的值的一个副本。改变i的值,t的值不会改变。

        拆箱时,在把t的值赋给j之后,t和j之间不再有任何关系。

     3.泛型约束 where T:new() //无参构造函数约束 

                      where T:class //引用类型约束

     4.list:sort 比较函数CompareTo有三种结果 1, -1 ,0分别代表大,小,相等。默认List的排序是升序排序。如果需要降序排列,可以直接在比较函数前面加个负号,把返回结果由1变成-1即可。例如:

    List<int> list = new List<int>() { 2, 1, 3, 4 };
    list.Sort((x, y) => -x.CompareTo(y));

        举个例子:在比较函数CompareTo()中,如果 x>y return 1;则是按照升序排列。如果x>y return -1;则是按照降序排列。这就是1和-1大小的含义。其实你非要这么写 x<y return 1;则也表示降序排列。不过大家一般习惯x>y return 1;升序,如果想要降序只需return -1;

      

  • 相关阅读:
    红帽7 Shell编程
    红帽7 vim编辑器
    红帽7 管道符、重定向与环境变量
    红帽7 systemctl管理服务的启动、重启、停止、重载、查看状态等常用命令
    python 装饰器详解
    红帽7 常用系统命令
    转 JSON详解
    转 C# using 三种使用方式
    存储过程详解 转
    使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件(转)
  • 原文地址:https://www.cnblogs.com/fer-team/p/13079747.html
Copyright © 2020-2023  润新知