zoukankan      html  css  js  c++  java
  • 值类型、引用类型

    值类型

      值类型(包括所有的数值类型、枚举和结构)都分配在栈上。所以值类型一旦离开其定义的作用域,立即就会从内存中删除

      当一个值类型赋值给另一个值类型的时候,默认情况下完成的是一个成员到另一个成员的复制。

    引用类型

      引用类型分配在托管堆上。其对象一直保留在内存中,直到.NET垃圾回收器将它们销毁。默认情况下,一个引用类型的赋值将new出一个对该堆上同一个对象的新引用(new关键字返回的是一个指向堆上对象的引用,而不是真正的对象本身。这个引用变量保存在栈内,以供程序以后使用)。

    包含引用类型的值类型

      该值类型的复制过程中,值类型依旧完成一个成员到另一成员的复制,而引用类型依旧是new出一个对堆上同一对象的引用的。

      默认情况下,当值类型包含其他引用类型时,赋值将生成一个引用的副本。这样就有两个独立的结构,每一个都包含指向内存中同一个对象的引用(浅复制)。

    按值传递引用类型

      其实该方式也是一种成员到另一成员的复制。只不过其复制的不是成员的值(状态),而是指向调用对象的引用。相当于复制了一个新的实参实例。该实例与实参一样指向堆上同一对象。

    按引用传递引用类型

      该方式传递的是引用类型的本身。通过使用ref关键字,传入的是参数对象本身。

      如果按引用传递引用类型,被调用者可能改变对象的状态数据的值和所引用的对象  

  • 相关阅读:
    textspan 转连接
    showDialog 必须Stateful
    SliverList , SliverFixedExtentList
    sliver
    [UWP]UIElement.Clip虽然残废,但它还可以这样玩
    [UWP]用Win2D和CompositionAPI实现文字的发光效果,并制作动画
    [UWP]用Win2D实现镂空文字
    [UWP]通过自定义XamlCompositionBrushBase实现图片平铺
    [UWP]使用Win2D的BorderEffect实现图片的平铺功能
    [UWP]使用CompositionAPI的翻转动画
  • 原文地址:https://www.cnblogs.com/76674718/p/1594171.html
Copyright © 2011-2022 走看看