一.什么是值类型?什么引用类型?

  1.值类型的值是存储在栈上的。引用类型是存在堆上的。

   2.值类型变量声明之后,不管是否已经分配内存,编译器在堆上为其分配内存。

   3.引用类型声明的时候,这时候只在栈中分配一小片内存用于容纳一个地址,此时候并没有为其分配堆上的内存地址,当new一个实例的时候,真正创建时候,才在堆       上分配内存空间,并把堆上空间的地址保存到栈上分配的小片空间中。

  4.现实中,比如你再报纸上看到一份报纸,发了一个有趣的内容要分享给朋友,你可以在买一份让你朋友看,这时候你和朋友就可以分享到同样的内容,但是从两份独立的报纸上,但是如果你在网页上浏览信息的时候,发现了有趣的内容,你会直接把Url发给你的朋友的,这时候你和你的朋友看到的是相同的内容,是从一个网站上看到的。这里面报纸的例子就是值类型,网页的例子就是引用类型。值类型的赋值,是完全拷贝了实际内容,而引用类型则只是拷贝了指向实际内容的地址。

  5.对于引用类型变量,它的值只是一个引用,而非一个对象。引用就像Url地址一样指向真实的对象,值类型存储的就是真实的数据。

误区:引用类型保存在堆上,值类型保存在栈上。

 1.这句话只说对了一半,引用类型是保存在堆上,但是值类型就不一定了。变量的值是在它声明的位置存储的,也是说一个类有一个int类型实例变量,那么这个变量的值总是和对象中的其他数据一起存储也就是堆上。只有局部变量,和方法内部的变量或者方法参数是在栈上。对于C#2以及更高版本,许多局部变量不完全存在栈上。

写的时候,可能又遗漏的想不起来的,持续完善中。。。。。。

1.C#知识点:值类型和引用类型的更多相关文章

  1. C#面试基础知识点:值类型和引用类型(1)(填坑文)

    目录 前言 C#值类型和引用类型 基类(共同点) 值类型继承基类(不同点) 应用类型继承 技术经理的问题 值类型与引用类型都可以用Equals来比较吗? 如何将一个数组a的值赋予数组b然后对b做修改而 ...

  2. 初级知识点一——C#中的值类型与引用类型

    从C#语言的定义中可以知道,C#支持两种值类型,分别是 值类型和引用类型,那么两者的区别到底在哪儿呢? 值类型特点: 1. 值类型包含 a 预定义的值类型 b 用户自定义的值类型(struct) 2. ...

  3. CLR值类型和引用类型

    知识点:引用类型.值类型.装箱.拆箱 CLR支持两种类型:引用类型和值类型.引用类型在堆上分配内存,值类型在线程栈上分配内存.值类型与引用类型如下所示: 值类型对象有两种表示形式:未装箱和已装箱.将一 ...

  4. Java的值类型和引用类型

    一.问题描述 前几天因为一个需求出现了Bug.说高级点也挺高级,说白点也很简单.其实也就是一个很简单的Java基础入门时候的值类型和引用类型的区别.只是开发的时候由于自己的问题,导致小问题的出现.还好 ...

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

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

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

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

  7. 图解C#的值类型,引用类型,栈,堆,ref,out

    C# 的类型系统可分为两种类型,一是值类型,一是引用类型,这个每个C#程序员都了解.还有托管堆,栈,ref,out等等概念也是每个C#程序员都会接触到的概念,也是C#程序员面试经常考到的知识,随便搜搜 ...

  8. c# 我所理解的 值类型 and 引用类型

    一直以来对于值类型和引用类型都只是一个模糊的概念,趁最近有空深入理解了下. 先说说值类型,在msdn上是这样介绍值类型的. 意思就是值类型直接包含值. 变量引用的位置就是值所在内存中实际存储的位置,所 ...

  9. JAVA初学(1):值类型和引用类型的区别

    JAVA值类型和引用类型的区别(转)                                                          [定义] 引用类型表示你操作的数据是同一个,也就 ...

随机推荐

  1. ABP 框架 数据库底层迁移 Mysql 集群

    技术交流,请加QQ群:538327407 我的各种github 开源项目和代码:https://github.com/linbin524 背景 笔者 目前架构的IOT 项目是使用abp 框架作为后台, ...

  2. js css等静态文件版本控制,一处配置多处更新.net版【原创】

    日常web开发中,我们修改了js.css等静态资源文件后,如果文件名不变的话,客户端浏览并不会及时获取最新的资源文件,这就很尴尬了 怎么办呢? 1.小白:让客户清除缓存?,No ,  不靠谱 2.初级 ...

  3. pageadmin CMS自助建站系统教程:模板中执行sql语句

    PageAdmin系统提供了一个内置的数据库访问对象,声明如下: DataBaseContext dbContext = DbHelper.DbContext(); 通过DataBaseContext ...

  4. solr 加载 停用/扩展词典

    startup.bat 停止词典的效果

  5. Color the ball(HDU1556)树状数组

    每次对区间内气球进行一次染色,求n次操作后后所有气球染色次数. 树状数组,上下区间更新都可以,差别不大. 1.对于[x,y]区间,对第x-1位减1,第y位加1,之后向上统计 #include<b ...

  6. 使用 kafkat 在线扩缩容 kafka replicas

    本文档应用环境为 kafka-0.8.2.0, 其余版本请先行测试 场景 线上很多 kafka 的 topic 的副本数为1,这样的设置丧失了 kafka 高可用的特性,所以我们需要把 topic 的 ...

  7. C标准库pow函数精度问题。

    #include <stdio.h> int main () { int temp,i; double a=2.4568; unsigned ]; ;i<;i++) { temp=( ...

  8. Windows平台下搭建自己的Git服务器

    该文章转自:http://www.codeceo.com/article/windows-git-server.html Gitblit 是一个纯 Java 库用来管理.查看和处理 Git 资料库,相 ...

  9. ProxySQL 部署 Single Writer Failover 读写分离 (PXC)

    主机信息: Proxysql: 如果你忽略了ProxySQL会报告主机组的变化,我建议把它设置为0,除非你试图调试"某些东西",否则你的日志将很快变得巨大.UPDATE globa ...

  10. Chrome 的 Material Design Refresh UI初探

    今天Chrome自动升级到69.0.3497.92, 发现UI已经变成了"Material Design Refresh". Chrome 浏览器的页面标签已经不再像以往那样倾斜和 ...