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

  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. VIM 实现tab标签页及分屏,切换命令

    1,在一个窗口中,VIM 的小tab标签页命令:   :tabnew [++opt选项] [+cmd] 文件            建立对指定文件新的tab :tabc       关闭当前的tab ...

  2. C++动态(显式)调用 C++ dll

    1.创建DLL新项目Dll1,Dll1.cpp: extern "C" __declspec(dllexport) const char* myfunc() { return &q ...

  3. 3.怎样将ASP.NET MVC应用程序发布到IIS

    这一篇,教大家怎么将ASP.NET MVC应用程序发布到本地或者IIS中.打开上一篇创建的ASP.NET MVC 5.0应用程序.[PS:上一篇--->2.第一个ASP.NET MVC 5.0应 ...

  4. HttpURLConnection与HttpClient随笔

    目前在工作中遇到的需要各种对接接口的工作,需要用到HTTP的知识,工作完成后想要做一些笔记,本来知识打算把自己写的代码粘贴上来就好了,但是偶然发现一篇博文对这些知识的总结非常到位,自认无法写的这么好, ...

  5. BZOJ2178: 圆的面积并(格林公式)

    题面 传送门 题解 好神仙-- 先给几个定义 平面单连通区域:设\(D\)是平面内一区域,若属于\(D\)内任一简单闭曲线的内部都属于\(D\),则称\(D\)为单连通区域.通俗地说,单连通区域是没有 ...

  6. 项目中jsp的存放

    今天早上犯的错, 复习jsp,把jsp放在 WEB-INF 下  我启动项目,想看效果的时候,一直找不到指定的资源404 后来一番探索,我把它拖放在了WebContent  直接访问的,下午看到知识点 ...

  7. Java代码审计连载之—添油加醋

    在代码审计中,按业务流程审计当然是必须的,人工的流程审计的优点是能够更加全面的发现漏洞,但是缺点是查找漏洞效率低下.如果要定向的查找漏洞,逆向跟踪变量技术就显得更加突出,如查找XSS.SQL注入.命令 ...

  8. while循环中使用scanf函数

    妈的,这scanf函数学了快10年了,怎么还会出现莫名其妙的问题?看下面的代码(VS2012环境下运行): #define _CRT_SECURE_NO_WARNINGS #include<st ...

  9. webApp开发中的总结

    meta标签:  H5页面窗口自动调整到设备宽度,并禁止用户缩放页面 <meta name="viewport" content="width=device-wid ...

  10. iOS开发-实现相机app的方法[转载自官方]

    This brief code example to illustrates how you can capture video and convert the frames you get to U ...