1.C#知识点:值类型和引用类型
一.什么是值类型?什么引用类型?
1.值类型的值是存储在栈上的。引用类型是存在堆上的。
2.值类型变量声明之后,不管是否已经分配内存,编译器在堆上为其分配内存。
3.引用类型声明的时候,这时候只在栈中分配一小片内存用于容纳一个地址,此时候并没有为其分配堆上的内存地址,当new一个实例的时候,真正创建时候,才在堆 上分配内存空间,并把堆上空间的地址保存到栈上分配的小片空间中。
4.现实中,比如你再报纸上看到一份报纸,发了一个有趣的内容要分享给朋友,你可以在买一份让你朋友看,这时候你和朋友就可以分享到同样的内容,但是从两份独立的报纸上,但是如果你在网页上浏览信息的时候,发现了有趣的内容,你会直接把Url发给你的朋友的,这时候你和你的朋友看到的是相同的内容,是从一个网站上看到的。这里面报纸的例子就是值类型,网页的例子就是引用类型。值类型的赋值,是完全拷贝了实际内容,而引用类型则只是拷贝了指向实际内容的地址。
5.对于引用类型变量,它的值只是一个引用,而非一个对象。引用就像Url地址一样指向真实的对象,值类型存储的就是真实的数据。
误区:引用类型保存在堆上,值类型保存在栈上。
1.这句话只说对了一半,引用类型是保存在堆上,但是值类型就不一定了。变量的值是在它声明的位置存储的,也是说一个类有一个int类型实例变量,那么这个变量的值总是和对象中的其他数据一起存储也就是堆上。只有局部变量,和方法内部的变量或者方法参数是在栈上。对于C#2以及更高版本,许多局部变量不完全存在栈上。
写的时候,可能又遗漏的想不起来的,持续完善中。。。。。。
1.C#知识点:值类型和引用类型的更多相关文章
- C#面试基础知识点:值类型和引用类型(1)(填坑文)
目录 前言 C#值类型和引用类型 基类(共同点) 值类型继承基类(不同点) 应用类型继承 技术经理的问题 值类型与引用类型都可以用Equals来比较吗? 如何将一个数组a的值赋予数组b然后对b做修改而 ...
- 初级知识点一——C#中的值类型与引用类型
从C#语言的定义中可以知道,C#支持两种值类型,分别是 值类型和引用类型,那么两者的区别到底在哪儿呢? 值类型特点: 1. 值类型包含 a 预定义的值类型 b 用户自定义的值类型(struct) 2. ...
- CLR值类型和引用类型
知识点:引用类型.值类型.装箱.拆箱 CLR支持两种类型:引用类型和值类型.引用类型在堆上分配内存,值类型在线程栈上分配内存.值类型与引用类型如下所示: 值类型对象有两种表示形式:未装箱和已装箱.将一 ...
- Java的值类型和引用类型
一.问题描述 前几天因为一个需求出现了Bug.说高级点也挺高级,说白点也很简单.其实也就是一个很简单的Java基础入门时候的值类型和引用类型的区别.只是开发的时候由于自己的问题,导致小问题的出现.还好 ...
- C# - 值类型、引用类型&走出误区,容易错误的说法
1. 值类型与引用类型小总结 1)对于引用类型的表达式(如一个变量),它的值是一个引用,而非对象. 2)引用就像URL,是允许你访问真实信息的一小片数据. 3)对于值类型的表达式,它的值是实际的数据. ...
- 【译】.NET中六个重要的概念:栈、堆、值类型、引用类型、装箱和拆箱
为何要翻译 一来是为了感受国外优秀技术社区知名博主的高质量文章,二来是为了复习对.NET技术的基础拾遗达到温故知新的效果,最后也是为了锻炼一下自己的英文读写能力.因为是首次翻译英文文章(哎,原谅我这个 ...
- 图解C#的值类型,引用类型,栈,堆,ref,out
C# 的类型系统可分为两种类型,一是值类型,一是引用类型,这个每个C#程序员都了解.还有托管堆,栈,ref,out等等概念也是每个C#程序员都会接触到的概念,也是C#程序员面试经常考到的知识,随便搜搜 ...
- c# 我所理解的 值类型 and 引用类型
一直以来对于值类型和引用类型都只是一个模糊的概念,趁最近有空深入理解了下. 先说说值类型,在msdn上是这样介绍值类型的. 意思就是值类型直接包含值. 变量引用的位置就是值所在内存中实际存储的位置,所 ...
- JAVA初学(1):值类型和引用类型的区别
JAVA值类型和引用类型的区别(转) [定义] 引用类型表示你操作的数据是同一个,也就 ...
随机推荐
- ABP 框架 数据库底层迁移 Mysql 集群
技术交流,请加QQ群:538327407 我的各种github 开源项目和代码:https://github.com/linbin524 背景 笔者 目前架构的IOT 项目是使用abp 框架作为后台, ...
- js css等静态文件版本控制,一处配置多处更新.net版【原创】
日常web开发中,我们修改了js.css等静态资源文件后,如果文件名不变的话,客户端浏览并不会及时获取最新的资源文件,这就很尴尬了 怎么办呢? 1.小白:让客户清除缓存?,No , 不靠谱 2.初级 ...
- pageadmin CMS自助建站系统教程:模板中执行sql语句
PageAdmin系统提供了一个内置的数据库访问对象,声明如下: DataBaseContext dbContext = DbHelper.DbContext(); 通过DataBaseContext ...
- solr 加载 停用/扩展词典
startup.bat 停止词典的效果
- Color the ball(HDU1556)树状数组
每次对区间内气球进行一次染色,求n次操作后后所有气球染色次数. 树状数组,上下区间更新都可以,差别不大. 1.对于[x,y]区间,对第x-1位减1,第y位加1,之后向上统计 #include<b ...
- 使用 kafkat 在线扩缩容 kafka replicas
本文档应用环境为 kafka-0.8.2.0, 其余版本请先行测试 场景 线上很多 kafka 的 topic 的副本数为1,这样的设置丧失了 kafka 高可用的特性,所以我们需要把 topic 的 ...
- C标准库pow函数精度问题。
#include <stdio.h> int main () { int temp,i; double a=2.4568; unsigned ]; ;i<;i++) { temp=( ...
- Windows平台下搭建自己的Git服务器
该文章转自:http://www.codeceo.com/article/windows-git-server.html Gitblit 是一个纯 Java 库用来管理.查看和处理 Git 资料库,相 ...
- ProxySQL 部署 Single Writer Failover 读写分离 (PXC)
主机信息: Proxysql: 如果你忽略了ProxySQL会报告主机组的变化,我建议把它设置为0,除非你试图调试"某些东西",否则你的日志将很快变得巨大.UPDATE globa ...
- Chrome 的 Material Design Refresh UI初探
今天Chrome自动升级到69.0.3497.92, 发现UI已经变成了"Material Design Refresh". Chrome 浏览器的页面标签已经不再像以往那样倾斜和 ...