值类型和引用类型

简介: 值类型和引用类型

值类型和引用类型

值类型:直接将内存存储在栈内,由系统自动释放资源的数据类型.与值类型相对应的有引用类型.C#语言中还对应指针类型

引用类型 由类型的实际值引用(类似于指针)表示的数据类型。如果为某个变量分配一个引用类型,则该变量将引用(或“指向”)原始值。不创建任何副本。引用类型包括类、接口、委托和装箱值类型。      

下面是结构体(值类型)和类(引用类型的区别)

值类型和引用类型的区分 (360doc.com)

为什么对象是引用类型,为什么string是引用类型,底层原理是什么?

引用是一种别名,本质上是指向同一块地址,底层实现是通过指针。

c#与c++做联系,引用类型相当于指针变量,值类型相当于普通变量。

值类型是复制的,对象一般都会占据比较大的内存空间。所以采用引用类型,不然效率低。理论上来说,在语言设计的时候,采用值类型还是引用类型没有严格的意义,这样的划分主要是为了效率。 正是因为这样的考虑,虽然struct是值类型,但也不建议用值类型的方式进行传参。

string指向常量空间的地址,常量是不能直接被改变的,如果想改变字符串的值是不能通过直接修改字符串常量来达到修改字符串的目的,必须是开辟另一个常量空间存放新的字符常量。

(91条消息) 为什么string是引用类型_kenniszy的博客-CSDN博客_string为什么是引用类型

我认为底层原理就是值类型存储在栈上,栈空间小,对象比较大,字符串也一样,所以在栈上存地址,new之后再在堆上分配空间存内容。


那我们来看看

堆和栈的区别


相关文章
|
存储 Java Go
值类型和引用类型|学习笔记
快速学习值类型和引用类型。
76 0
值类型和引用类型|学习笔记
再聊一次值类型和引用类型
这是一个托管的值类型,表示array的一个片断, 在用做websocket接收数据的载体时我发现每次值传递后, 这个ArraySegment<byte>貌似发生了变化。这勾起了我的探究欲。
再聊一次值类型和引用类型
|
存储 开发框架 .NET
C#系列之值类型和引用类型
C#系列之值类型和引用类型
132 0
C#系列之值类型和引用类型
|
存储 Java 程序员
C#基础——值类型和引用类型
C#基础——值类型和引用类型
550 0
C#基础——值类型和引用类型
|
存储 数据格式 JSON
第183天:引用类型和值类型
一、内存分配 1、数值型内存分配 1 2 var num1; //这个时候不进行内存分配 3 var num3=9;//分配内存 4 var num4=num3;//会不会分配 5 6 // 这里到底分配还是不分配内存?? 7 // 答案 --分配内存 彼此拥有独立的内存空间,互不影响 8 console.
985 0
|
算法 C#
c#值类型与引用类型区别
值类型对象的两种表示方式:未装箱和已装箱,引用类型总是处于已装箱 值类型从System.ValueType派生。该类型提供了与System.Object相同方法,但System.ValueType重写了Equals方法, 能在两个对象的自断值完全匹配的前提下返回true。
933 0