值类型与引用类型区别

 
值类型


引用类型


存储方式


直接存储数据本身


存储的是数据的引用,数据存储在数据堆中


内存分配


分配在栈中的


分配在堆中


效率


效率高,不需要地址转换


效率较低,需要进行地址转换


内存回收


使用完后立即回收


使用完后不立即回收,而是交给GC处理回收


赋值操作


创建一个新对象


创建一个引用


类型扩展


不易扩展,所有值类型都是密封(seal)的,所以无法派生出新的值类型


具有多态的特性方便扩展


实例分配


通常是在线程上分配的(静态分配),但是在某些情形下可以存储在堆中


总是在进程中分配(动态分配

原文链接:http://www.cnblogs.com/zengming/p/6037048.html

原文地址:https://www.cnblogs.com/yuanch2019/p/11592302.html

时间: 2024-11-29 12:05:37

值类型与引用类型区别的相关文章

值类型和引用类型 区别

3.值类型和引用类型 区别: 存储位置:值类型的数据存储在内存的栈中:引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的地址. 传递方式:值类型传递实际值,引用类型传递是引用(地址). 值类型存取速度快,引用类型存取速度慢. 值类型表示实际数据,引用类型表示指向存储在内存堆中的数据的指针或引用. 值类型继承自System.ValueType,引用类型继承自System.Object. 栈的内存分配是自动释放:而堆在.NET中会有GC来释放. C#中基本数据类型是值类型,结构体.枚举也是

值类型和引用类型区别:

3.值类型和引用类型区别:1)值类型和引用类型在内存上存储的地方不一样.2)在传递值类型和传递引用类型的时候,传递的方式不一样.值类型我们称之为值传递,引用类型我们称之为引用传递.我们学的值类型和引用类型:值类型:int double bool char decimal struct enum引用类型:string 自定义类 数组 存储:值类型的值是存储在内存的栈当中.引用类型的值是存储在内存的堆当中.

【转】C#详解值类型和引用类型区别

通用类型系统 值类型 引用类型 值类型和引用类型在内存中的部署 1 数组 2 类型嵌套 辨明值类型和引用类型的使用场合 5 值类型和引用类型的区别小结 首先,什么是值类型,什么是引用类型? 在C#中值类型的变量直接存储数据,而引用类型的变量持有的是数据的引用,数据存储在数据堆中. 值类型(value type):byte,short,int,long,float,double,decimal,char,bool 和 struct 统称为值类型.值类型变量声明后,不管是否已经赋值,编译器为其分配内

值类型和引用类型区别,一看就懂

本文主要是讨论栈和堆的含义,也就是讨论C#的两种类据类型:值类型和引用类型: 虽然我们在.net中的框架类库中,大多是引用类型,但是我们程序员用得最多的还是值类型. 引用类型如:string,Object,class等总是在从托管堆上分配的,C#中new操作符返回对象的内存地址--也就是指向对象数据的内存地址.   以下是值类型与引用类型的表:    我们来看下面一段代码:     首先在类中声明一个class类,和一个struct结构,如图:   并使用在程序入口调用它们,如图:     现在

c#值类型与引用类型区别

值类型对象的两种表示方式:未装箱和已装箱,引用类型总是处于已装箱 值类型从System.ValueType派生.该类型提供了与System.Object相同方法,但System.ValueType重写了Equals方法, 能在两个对象的自断值完全匹配的前提下返回true.比外,System.ValueType重写了GetHashCode方法,生成哈希码时,这个重写方法所用的算法会将对象的实例字段中的值考虑在内.由于这个默认实现存在性能问题,所以定义自己的值类型时应重写Equals和GetHash

值类型和引用类型的区别,struct和class的区别

C#值类型和引用类型 1.简单比较 值类型的变量直接存储数据,而引用类型的变量持有的是数据的引用,数据存储在数据堆中. 值类型(value type):byte,short,int,long,float,double,decimal,char,bool 和 struct 统称为值类型.值类型变量声明后,不管是否已经赋值,编译器为其分配内存. 引用类型(reference type):string 和 class统称为引用类型.当声明一个类时,只在栈中分配一小片内存用于容纳一个地址,而此时并没有为

值类型和引用类型深入理解

引言 山重水复疑无路,柳暗花明又一村,越探究越接近事物的本质.最近在学习原型模式(Prototype)时,发现原型模式本质就是对一个类原始数据的克隆,但在学习深拷贝和浅拷贝时又发现与值类型和引用类型有着千丝万缕的联系.回想好久都没有温习基础,于是就整理了值类型和引用类型的随笔,本文内容比较基础,对于想继续深入研究的同学可以查看IL更深入探究. 1.值类型(ValueType) 值类型包括:数值类型,结构体,bool型,用户定义的结构体,枚举,可空类型. 值类型的变量直接存储数据,分配在托管栈中.

20151024_001_C#基础知识(静态与非静态的区别,值类型和引用类型,堆和栈的区别,字符串的不可变性,命名空间)

1:我们把这些具有相同属性和相同方法的对象进行进一步的封装,抽象出来类这个概念. 类就是个模子,确定了对象应该具有的属性和方法. 对象是根据类创建出来的. 2:类:语法 [public] class 类名 { 字段; 属性; 方法; } 写好了一个类之后,我们需要创建这个类的对象,那么,我们管创建这个类的对象过程称之为类的实例化.使用关键字new 实例化类===创建类 this:表示当前这个类的对象. 类是不占内存的,而对象是占用内存的. 结构是面向过程的,类是面向对象的,之前没有面向对象的时候

JAVA初学(1):值类型和引用类型的区别

JAVA值类型和引用类型的区别(转)                                                          [定义] 引用类型表示你操作的数据是同一个,也就是说当你传一个参数给另一个方法时,你在另一个方法中改变这个变量的值,那么调用这个方法是传入的变量的值也将改变. 值类型表示复制一个当前变量传给方法,当你在这个方法中改变这个变量的值时,最初生命的变量的值不会变.     通俗说法: 值类型就是现金,要用直接用:引用类型是存折,要用还得先去银行取现.-