Asp.Net进阶/值类型与引用类型:复习
什么是值类型?
值类型: 就是非类类型,委托类型,接口类型,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进阶/值类型与引用类型:复习的更多相关文章
- 值类型和引用类型(C#基础知识复习)
一.值类型和引用类型 二.值类型的赋值和相等 三.引用类型的赋值和同一
- 【译】.NET中六个重要的概念:栈、堆、值类型、引用类型、装箱和拆箱
为何要翻译 一来是为了感受国外优秀技术社区知名博主的高质量文章,二来是为了复习对.NET技术的基础拾遗达到温故知新的效果,最后也是为了锻炼一下自己的英文读写能力.因为是首次翻译英文文章(哎,原谅我这个 ...
- .NET中的六个重要概念:栈、堆、值类型、引用类型、装箱和拆箱
为何要翻译 一来是为了感受国外优秀技术社区知名博主的高质量文章,二来是为了复习对.NET技术的基础拾遗达到温故知新的效果,最后也是为了锻炼一下自己的英文读写能力.因为是首次翻译英文文章(哎,原谅我这个 ...
- 数往知来C#之接口 值类型与引用类型 静态非静态 异常处理 GC垃圾回收 值类型引用类型内存分配<四>
C# 基础接口篇 一.多态复习 使用个new来实现,使用virtual与override -->new隐藏父类方法 根据当前类型,电泳对应的方法(成员) -->override ...
- C# 值类型,引用类型区别
值类型/引用类型 作为所有类型的基类,System.Object提供了一组方法,这些方法在所有类型中都能找到,其中包含toString方法及clone等方法. 引用类型和值类型都继承自System.O ...
- C#基础篇五值类型和引用类型
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace P01M ...
- [转] .NET中六个重要的概念:栈、堆、值类型、引用类型、装箱和拆箱
为何要转载 一来是最近面试了几家公司,发现问的还都是这些的基础知识,二来是为了复习对.NET技术的基础拾遗达到温故知新的效果. 为什么有人说,不动笔不读书.我现在也是深有体会了,看过的东西不一定会记得 ...
- .NET中的值类型与引用类型
.NET中的值类型与引用类型 这是一个常见面试题,值类型(Value Type)和引用类型(Reference Type)有什么区别?他们性能方面有什么区别? TL;DR(先看结论) 值类型 引用类型 ...
- C# - 值类型、引用类型&走出误区,容易错误的说法
1. 值类型与引用类型小总结 1)对于引用类型的表达式(如一个变量),它的值是一个引用,而非对象. 2)引用就像URL,是允许你访问真实信息的一小片数据. 3)对于值类型的表达式,它的值是实际的数据. ...
随机推荐
- nRF51822 硬件复位引脚
nRF51822 有一个硬件复位引脚和Debug 口SWDIO是共用的,名字叫做nReset. 实现硬件复位是怎样子的: 1.这个引脚引出来, 2.给这个引脚低电平, 3.从低电平拉到高电平,即复位. ...
- 带状矩阵的存储(c++)
2 1 0 0 3 1 3 0 0 5 2 7 0 0 9 0 这个程序对于三对角矩阵都是有效的,为了精 ...
- 关于Java正则和转义中\\和\\\\的理解
定义 一个转义字符的目的是开始一个字符序列,使得转义字符开头的该字符序列具有不同于该字符序列单独出现时的语义. 转义就是指转换该字符的原本意义,从而变成另外的意义. \作为Java的转义字符 1.在j ...
- (转载)基于Linux C的socket抓包程序和Package分析
转载自 https://blog.csdn.net/kleguan/article/details/27538031 1. Linux抓包源程序 在OSI七层模型中,网卡工作在物理层和数据链路层的MA ...
- ubuntu之路——day13 只用python的numpy在较为底层的阶段实现单隐含层神经网络
首先感谢这位博主整理的Andrew Ng的deeplearning.ai的相关作业:https://blog.csdn.net/u013733326/article/details/79827273 ...
- [Beta]第十次 Scrum Meeting
[Beta]第十次 Scrum Meeting 写在前面 会议时间 会议时长 会议地点 2019/5/20 22:00 20min 大运村公寓6F寝室 附Github仓库:WEDO 例会照片 工作情况 ...
- 解读 | 你真正理解什么是Cloud Native吗?
你能做到每周.每天甚至每个钟头向客户发布新特性吗?新加入的开发者能够在他们工作的第一天甚至面试阶段就能部署代码吗?部署新员工的代码后,你能因为确信应用程序运行正常而安然入睡吗?建立快速发布机制,包括支 ...
- 从零开始搭建实验室Ubuntu服务器 | 深度学习工作站
一个标准的数据分析码农必须要配一台超薄笔记本和一台高性能服务器,笔记本是日常使用,各种小问题的解决,同时也是用于远程连接终端服务器:高性能服务器就是核心的处理数据的平台,CPU.内存.硬盘容量.GPU ...
- python2.7报错Non-ASCII character '\xe5' in file的解决方法
在文件首行加#coding=utf-8,一定要在最顶行添加
- MSYS2 更新源
博客转载自:https://blog.csdn.net/puputaoexin/article/details/81780492 在使用msys2下载文件的时候回出现下载速度奇慢,且经常因为各种原因报 ...