什么是值类型?

值类型: 就是非类类型,委托类型,接口类型,string类型的类型称为值类型。

引用类型类型:就是类类型,委托类型,接口类型,string类型称为引用类型。

值类型与引用类型的赋值问题。。。。

值类型的赋值:值类型之间的赋值是创建一个副本,两个完全独立的变量存储一个值。

  1. int x=10;
  2. int y=x;
  3. y=20;
  4. Console.WriteLine(x+"\t"+y)

输出结果:10  20

因为值类型之间的赋值是创建副本并不是引用,那么你对赋值之后的另一个变量改变值不会影响到另一个变量。这就是值类型。

引用类型的赋值:引用类型的赋值时引用同一个对象,即两个引用类型变量将对同一个对象进行引用,对其中任何一个变量进行操作,都会影响到另一个。

  1. var listTwo=listOne;
    listTwo.Add(6);
    listTwo.ForEach(x=>Console.Write(x+"\t"));
    Console.WriteLine();
    listOne.ForEach(y=>Console.Write(y+"\t"));

输出结果:

2 3 4 5 6
2 3 4 5 6

因为引用类型变量之间的赋值是将自身所引用的对象交给另一个变量引用,那么他们就引用了同一个对象。即同一个对象那么对象在内存中的地址是被两个对象所引用,那么就形成了引用同一个对象。

如果对其中的一个变量使其引用另一个对象然后修改,他就不会影响到之间赋值的对象,因为他更换了所引用的对象。(变量在栈中的地址是不同的除非在方法参数列表中由ref关键字声明一个类型变量那么变量的地址是相同的)

声明:无论值类型变量还是引用类型变量都是在栈中分配内存的。

   而实例/对象的创建是在堆内存中创建的。那么引用类型变量所能实现引用实例是因为,引用类型变量存储了对象在对内存中的地址形成引用。

注意:值类型变量在栈中分配多大的内存给变量是由你声明的变量的类型决定的例:int 32位 则在栈中分配4字节内存给这个变量

     当声明引用类型变量的时候,系统直接给其在栈中分配4字节内存给变量用于存储对象在堆中的地址。

Asp.Net进阶/值类型与引用类型:复习的更多相关文章

  1. 值类型和引用类型(C#基础知识复习)

    一.值类型和引用类型 二.值类型的赋值和相等 三.引用类型的赋值和同一

  2. 【译】.NET中六个重要的概念:栈、堆、值类型、引用类型、装箱和拆箱

    为何要翻译 一来是为了感受国外优秀技术社区知名博主的高质量文章,二来是为了复习对.NET技术的基础拾遗达到温故知新的效果,最后也是为了锻炼一下自己的英文读写能力.因为是首次翻译英文文章(哎,原谅我这个 ...

  3. .NET中的六个重要概念:栈、堆、值类型、引用类型、装箱和拆箱

    为何要翻译 一来是为了感受国外优秀技术社区知名博主的高质量文章,二来是为了复习对.NET技术的基础拾遗达到温故知新的效果,最后也是为了锻炼一下自己的英文读写能力.因为是首次翻译英文文章(哎,原谅我这个 ...

  4. 数往知来C#之接口 值类型与引用类型 静态非静态 异常处理 GC垃圾回收 值类型引用类型内存分配<四>

    C# 基础接口篇 一.多态复习 使用个new来实现,使用virtual与override    -->new隐藏父类方法 根据当前类型,电泳对应的方法(成员)    -->override ...

  5. C# 值类型,引用类型区别

    值类型/引用类型 作为所有类型的基类,System.Object提供了一组方法,这些方法在所有类型中都能找到,其中包含toString方法及clone等方法. 引用类型和值类型都继承自System.O ...

  6. C#基础篇五值类型和引用类型

    using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace P01M ...

  7. [转] .NET中六个重要的概念:栈、堆、值类型、引用类型、装箱和拆箱

    为何要转载 一来是最近面试了几家公司,发现问的还都是这些的基础知识,二来是为了复习对.NET技术的基础拾遗达到温故知新的效果. 为什么有人说,不动笔不读书.我现在也是深有体会了,看过的东西不一定会记得 ...

  8. .NET中的值类型与引用类型

    .NET中的值类型与引用类型 这是一个常见面试题,值类型(Value Type)和引用类型(Reference Type)有什么区别?他们性能方面有什么区别? TL;DR(先看结论) 值类型 引用类型 ...

  9. C# - 值类型、引用类型&走出误区,容易错误的说法

    1. 值类型与引用类型小总结 1)对于引用类型的表达式(如一个变量),它的值是一个引用,而非对象. 2)引用就像URL,是允许你访问真实信息的一小片数据. 3)对于值类型的表达式,它的值是实际的数据. ...

随机推荐

  1. Jmeter5.11安装

    jmeter5.11要对应jdk1.8以上版本 1.选择zip后缀进行下载 2.配置环境变量 (1)电脑桌面---->"计算机"图标---->鼠标右键选择"属 ...

  2. python 玩爬虫安装了一大堆第三方库

    之前就听说过爬虫,感觉很复杂的样子,但是看到python代码很简短.由于本机已经安装了python2.7 所以就拿来py 文件跑一下想看看效果. 结果各种代码错误.然后根据每个错误去下载对应的依赖项. ...

  3. CEF拦截js层alert弹窗 OnJSDialog 《转》

    一 引言 CEF3嵌入后,用JS 弹出Alert框,按钮错位,确定按钮勉强能看到.很难看.为了改善体验,决定重写提示框. 环境:VS2008  VC  MFC.   二 原理 参看类 CefJSDia ...

  4. spring @Autowired注入map

    注入map,平常一般不会这么做,今天看一段老代码时发现有这么个用法.补习一下. @Autowired 标注作用于 Map 类型时,如果 Map 的 key 为 String 类型,则 Spring 会 ...

  5. t420 win7 硬盘安装ubuntu 10.04 LTS 备忘

    http://zhangwen.sinaapp.com/?p=5 t420 win7 硬盘安装ubuntu 10.04 LTS 备忘 发表于 2011 年 10 月 25 日 对ubuntu的新版没有 ...

  6. docker 安装redis cluster集群

    安装Redis镜像 docker pull yyyyttttwwww/redis 创建redis容器 docker run -it -d --name r1 -p 5001:6379 --net=ne ...

  7. Solidity truffle,部署合约到Ropsten测试链或主链,调用合约(转)

    Solidity truffle,部署合约到Ropsten测试链或主链,调用合约 转 https://blog.csdn.net/houyanhua1/article/details/89010896 ...

  8. SD-WAN基础---SD-WAN简单了解

    一:推文(摘录.转载自) 关于SD-WAN,你不得不了解的10个常识 那些让人怦然心动的SD-WAN功能(上) 那些让人怦然心动的SD-WAN功能(中) 二:SD-WAN是什么 SD-WAN,即软件定 ...

  9. RSA 签名、验证、加密、解密帮助类

    import java.io.IOException; import java.security.InvalidKeyException; import java.security.KeyFactor ...

  10. 将map对象参数转换成String=String&方式

    * 将map对象参数转换成String=String&方式 * @param params * @param charset * @return * @throws UnsupportedEn ...