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)对于值类型的表达式,它的值是实际的数据. ...
随机推荐
- elastic stack安装运行(docker)
https://www.docker.elastic.co 注:目前阿里云为7.4 elasticsearch 参考https://www.elastic.co/guide/en/elasticsea ...
- window上可以执行的shell脚本,复制到linux上执行报错了
原因:.sh脚本在windows系统下用记事本文件编写的.不同系统的编码格式引起的. 解决方法:修改.sh文件格式 (1)使用vi工具vi build_android.sh (2)利用如下命令查看文件 ...
- 虚拟机VirtualBox 共享挂载问题:mount: /mnt/xxx: wrong fs type, bad option, bad superblock on xxx
设置好共享文件夹之后,在/mnt下面建立了一个wwwroot文件夹,然后去欢天喜地的去挂载, mount -t vboxsf www /mnt/wwwroot 结果系统提示: mount: /mnt/ ...
- Java12新特性 -- 只保留一个 AArch64 实现
现状 当前 Java 11 及之前版本JDK中存在两个64位ARM端口.这些文件的主要来源位于src/hotspot/cpu/arm 和 open/src/hotspot/cpu/aarch64 目录 ...
- Qt开发经验小技巧11-20
获取类的属性 const QMetaObject *metaobject = object->metaObject(); int count = metaobject->propertyC ...
- Qt编写图片及视频TCP/UDP网络传输
一.前言 很多年前就做过类似的项目,无非就是将本地的图片上传到服务器,就这么简单,其实用http的post上传比较简单容易,无需自定义协议,直接设置好二进制数据即可,而采用TCP或者UDP通信的话,必 ...
- SAP views
文章转自 http://blog.csdn.net/HikenWong/article/details/8263969 1. sap的视图的类型sap的视图的类型有五种: Database views ...
- 移动端播放直播流(video.js 播放 m3u8 流)
流媒体服务器: wowza 流媒体格式: m3u8 播放端:移动端网页(Android.IOS) 播放工具: video.js 代码如下: <!DOCTYPE html> <html ...
- Bat批处理之for/f详解
转自:https://www.cnblogs.com/zhangq/p/3988697.html 含有/F的for格式: FOR /F ["options"] %%i IN (fi ...
- Fiddler如何切换hosts以及切换hosts的另一个神器SwithcHosts