什么是值类型?

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

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

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

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

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

输出结果:10  20

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

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

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. python 得到列表的第二大的元素

    code #coding=utf- l=[,,,,,,] max1=l[] max2=l[] if(max1>max2): pass else: max1,max2=max2,max1 :]: ...

  2. hadoop jps不显示信息

    使用kvm做了一个hadoop组件的镜像,使用该镜像启动,在使用jps的时候,没有任何信息显示. 解决: 删除/tmp下的hsper开头文件,哪个用户没有权限就删除对应的hsper**_usernam ...

  3. span 不使用float 靠右对齐且垂直居中

    一般让div 里的span 靠右对齐用的方法比较多的是float:right. 这次由于各种原因我不想用float 先看效果: HTML 部分 <div class="customer ...

  4. 正则表达式在线分析 regex online analyzer

    https://regexper.com/#%2F%5B0-9%5D%5Cs%5B0-9%5D%2F https://regexper.com/ http://regexone.com/lesson/ ...

  5. 工具系列 | 使用Lodop进行WEB打印程序开发

    Lodop(标音:劳道谱,俗称:露肚皮)是专业WEB控件,用它既可裁剪输出页面内容,又可用程序代码直接实现 复杂打印.控件功能强大,却简单易用,所有调用如同JavaScript扩展语句. WEB套打可 ...

  6. ora-8176原因及解决方法

    在oracle undo_retention范围内,且_undo_autotune=false的情况下,一个语句执行的时候仍然发生ora-8176,语句如下: INSERT INTO XXX SELE ...

  7. pytorch visdom可视化工具学习—3-命令行操作使用经验

    在使用过程中一直以为要在哪个指定的environment下(即参数env)绘制内容,就必须在使用时声明 比如如果不声明,默认的就是在'main'环境下,端口为8097: viz = visdom.Vi ...

  8. [LeetCode] 686. Repeated String Match 重复字符串匹配

    Given two strings A and B, find the minimum number of times A has to be repeated such that B is a su ...

  9. Activiti数据库表结构(23张表5.*版本)

    1  Activiti数据库表结构 1.1      数据库表名说明 Activiti工作流总共包含23张数据表,所有的表名默认以“ACT_”开头. 并且表名的第二部分用两个字母表明表的用例,而这个用 ...

  10. PHP实现的MongoDB数据增删改查

    原文地址:https://www.mongodb.org.cn/drivers/2.html   (该网站为mongoDB官方网站) php中使用mongodb你必须使用 mongodb 的 php驱 ...