zoukankan      html  css  js  c++  java
  • C# 引用类型 Customer customer1; customer1 = new Customer();和Customer custumer1 = new Customer();的区别

      引用类型的分配相当复杂,该博文只说明这两种实例化的区别。

    static void Main(string[] args) {
        Customer customer1;
        customer1 = new Customer();
    }

      Customer customer1;

      声明一个 Customer引用customer1,会在栈上给这个引用分配存储空间。但这只是一个引用,而不是实际的Customer对象,customer1引用占用4个字节的空间(GetHashCode()返回的是一个int类型)。

      customer1 = new Customer();

      这行代码完成了以下操作:首先,它分配内存,以存储Customer对象(一个真正的对象,不只是一个地址)。然后把变量customer1的值设置为分配给新的Customer对象的内部地址(它会调用当前调用的构造函数初始化类中的字段)。Customer实例没有存放在栈中,而是存放在堆中。假定当前new Customer()对象占用32个字节,.NET 运行库会在堆中选取一个未使用的且包含32字节的连续块。

    static void Main(string[] args) {
        Customer customer1 = new Customer();
    }

    该操作会把上面两步合并成一步来执行。

    还有一个问题就是:

    static void Main(string[] args) {
        Customer customer1;
        Customer customer1 = null;
    }

    这两种方式有什么区别。

  • 相关阅读:
    日期时间格式
    input表单加disable的后无法获取其value值
    登录判断,清除中间变量
    弹出层嵌套
    转换qq音乐格式为mp3
    layui双击表格,跳转修改页面
    设置输入电话号码为11位
    layui表格设置,分数合计
    解决数据库传回时间类型为数字
    自定义标签
  • 原文地址:https://www.cnblogs.com/grj1046/p/2851500.html
Copyright © 2011-2022 走看看