C#基础知识----值类型与引用类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#基础知识----值类型与引用类型相关的知识,希望对你有一定的参考价值。

CLR支持两种基本类型:值类型引用类型

 

那么又有哪些数据类型是值类型的   又有哪些数据类型是引用类型的呢?请看下面的简单归纳:

值类型:

           所有的数值类型(long int short byte ulong uint ushort sbyte decimal double float)

           bool

           枚举(enum)

           结构(struct)

 

引用类型:

           string 

           数组

            类(class)

            接口(interface)

引用类型和值类型的划分依据:  他们在内存中的存储方式不同      内存最重要的两部分  一部分是栈空间   一部分是堆空间      值类型的变量是存储在栈空间中  而引用类型的变量是将值存储在堆空间中

   下面我们来看看值类型和引用类型在内存中是如何存储数据的

技术分享

  上面是值类型和引用类型存储的示例图        

可以看见值类型的变量  是将值和变量直接存储在栈空间的   而引用类型的变量是将变量存储在栈空间  却降值存储的堆空间中  引用变量在栈空间内存储的是 其值的地址而已   

  关于变量分赋值  

值类型的变量赋值: 重新开辟一块栈空间   将值直接复制一份过去  

引用类型的变脸赋值: 在栈空间重新开辟一个空间   将原有的值所在的地址 存放在新的引用变量中保存起来

 

以上是关于C#基础知识----值类型与引用类型的主要内容,如果未能解决你的问题,请参考以下文章

c# 值类型与引用类型 值传递与引用传递

C# 类型基础 值类型和引用类型

30天C#基础巩固-----值类型/引用类型,泛型,空合并操作符(??),匿名方法

c#中值类型和引用类型的区别

C#基础-变量与常量

c#中值类型与引用类型的值传递与引用传递