深入C#数据类型小部分第二章
值类型和引用类型
C#的值类型包括:结构体(数值类型,bool型,用户定义的结构体),枚举,可空类型。 C#的引用类型包括:数组,用户定义的类、接口、委托,object,字符串。 数组的元素,不管是引用类型还是值类型,都存储在托管堆上。 引用类型在栈中存储一个引用,其实际的存储位置位于托管堆。为了方便,本文简称引用类型部署在托管推上。 值类型总是分配在它声明的地方:作为字段时,跟随其所属的变量(实例)存储;作为局部变量时,存储在栈上。 值类型在内存管理方面具有更好的效率,并且不支持多态,适合用作存储数据的载体;引用类型支持多态,适合用于定义应用程序的行为。
值类型和引用类型区别
每一个值类型都有一个独立的内存区域保存自己的值,调用它的时候调用的是他的值,而应用类型调用的是内存中的地址
比如a1=18,这时候在内存中保存的是18,当把a1付给a2的时候,他们两个应用的是同一个内存空间,a2的值会保存为a1的值,当把a2改为20是,应为a1和a2引用的是同一个所以a1也变成20了,这是引用类型,
值类型是当把a1付给a2时会为a2在开一块新的空间保存a1的值。当把a2改成20时就会在a2的空间保存20,和a1就没关系了 值方式参数传递
1、值参数(Value Parameter )
格式:方法名称(参数类型 参数名称[,参数类型 参数名称]) 2、引用参数(Reference Parameter )
格式:方法名称(ref 参数类型 参数名称[,ref 参数类型 参数名称]) 3、输出参数(Out Parameter)
格式:方法名称(out 参数类型 参数名称[,out 参数类型 参数名称]) 二、值参数与引用参数及输出参数的区别:
2.1 值参数中实参的值不随形参值变更而变更;
形参与实参值互不影响,实参传递给形参时,堆栈中就为其分配另外一部分空间。这样,两个参数变更时而互不影响。
2.2 引用参数及输出参数中实参的值会随形参值变更而变更
(形参:在定义函数中指定的形参,在未出现函数调用时,它们并不占内存中的存储单元.只有在发生函数调用时,函数中形参才被分配内存单元.在调用结束后,形参所占的内存单元也被释放。调用时将实参的值赋绐形参);
引用参数与输出参数中,实参在堆栈中分配空间。当实参传递给形参时,会将地址传递给形参,即传送的时指针,这样形参变更时,实参也会随著变更。 三、引用参数与输出参数区别:
3.1 使用ref与out参数时,方法中参数及调用参数都需要加Ref或out关键字
3.2 使用ref参数与out参数得到的结果是一样的,区别是:ref在调用前需给调用方法中的参数赋初值。out在调用前不需给调用方法中的参数赋初值,参数在实际方法体中初始化。
深入C#数据类型小部分第二章的更多相关文章
- 微信小程序教学第二章:小程序中级实战教程之预备篇 - 项目结构设计 |基于最新版1.0开发者工具
iKcamp官网:http://www.ikcamp.com 访问官网更快阅读全部免费分享课程:<iKcamp出品|全网最新|微信小程序|基于最新版1.0开发者工具之初中级培训教程分享>. ...
- 微信小程序教学第二章(含视频):小程序中级实战教程之预备篇 - 封装网络请求及 mock 数据
§ 封装网络请求及 mock 数据 本文配套视频地址: https://v.qq.com/x/page/i05544fogcm.html 开始前请把 ch2-3 分支中的 code/ 目录导入微信开发 ...
- C#本质论读书笔记:第一章 C#概述|第二章 数据类型
第一章 1.字符串是不可变的:所有string类型的数据,都不可变,也可以说是不可修改的,不能修改变量最初引用的数据,只能对其重新赋值,让其指向内存中的一个新位置. 第二章 2.1 预定义类型或基本类 ...
- 《Mysql 公司职员学习篇》 第二章 小A的惊喜
第二章 小A的惊喜 ---- 认识数据库 吃完饭后,小Y和小A回到了家里,并打开电脑开始学习Mysql. 小Y:"小A,你平时的Excell文件很多的情况下,怎么样存放Exce ...
- Java 第二章 变量、数据类型和运算符
第二章 变量.数据类型和运算符 什么是变量: 变量代表一块内存区域,变量类型不一样,这一块内存的大小也不一样. #在编程语言里面,你可以通过定义变量,向内存里添加数据或者修改内存已有的数据. ...
- 使用MYSQL数据库实现编程----第二章第三章课堂知识小总结
第二章1:创建数据库create database myschool 2.数据类型 1.整型 int 2.小数 double 精确度要求高的 ----Decimal(18,4) 2222222 ...
- 第二章 深入 C# 数据类型
第二章 深入 C# 数据类型 1.封装又称信息隐藏,是指利用抽象数据类型将数据和数据的操作结合在一起,使其构成一个不可分割的独立实体,尽可能的隐藏内部的细节,只保留一些对外接口,使之于外部发生联系. ...
- JAVA学习之Ecplise IDE 使用技巧(2)第二章:键盘小快手,代码辅助
上一篇:JAVA学习之Ecplise IDE 使用技巧(1)第一章:我的地盘我做主,工作空间 第二章:键盘小快手,代码辅助 内容包括: 第一:显示行号 如何设置行号:Ecplice菜单Windows& ...
- Mysql技术内幕-笔记-第二章 数据类型
第二章 数据类型 Mysql中尽量不要使用UNSIGNED,因为可能会带来一些意想不到的效果 SHOW CREATE TABLE tablename\G;查看表的创建语句 ZEROFILL会将宽度小于 ...
随机推荐
- dede顶级栏目直接显示内容
点击网站栏目管理,增加顶级栏目 在弹出的增加窗口中,填上栏目名称,其它的如果没有特殊的要求可直接默认 点击常规选项旁边的高级选项,并且在列表模板中,将其改一个文件名,这个文件名就是后面需要使用到的文件 ...
- java获取本月开始时间和结束时间、上个月第一天和最后一天的时间以及当前日期往前推一周、一个月
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.uti ...
- laravel 中 与前端的一些事1
首先安装node.js 在命令行中敲node -v 可以查看node的版本信息 还需要安装npm,相当于php中的composer node.js中5.0版本后的都已经将npm打包进node了 还要安 ...
- ScrollView嵌套StackView提示需要宽度和高度限制
场景: 在一个xib的view中,添加一个ScrollView,再在这个ScrollView中添加一个StackView,StackView中不加控件(用代码动态加). 问题: 提示ScrollVie ...
- Run “mvn clean install” in Eclipse
1.在Maven项目或者pom.xml上右键-->Run As -->"Maven Build..."或者"Run Configuration-->Ma ...
- PLSQL DEVELOPER 连接远程数据库 OCI客户端安装方法
安装使用过PLSQL Dev都知道,要连接数据库,必须配置TNS(Transparence Network Substrate),而直接安装PLSQL Dev 之后,本机是没有Oracle HOME的 ...
- Quoted-printable 编码介绍、编码解码转换
求教,“=B9=A4=D7=F7=BC=F2=B1=A8” 这种是什么编码方式? Quoted-printable 可译为“可打印字符引用编码”.“使用可打印字符的编码”,我们收邮件,查看信件原始信息 ...
- struts2拦截器与过滤器
转载:http://www.cnblogs.com/JohnLiang/archive/2011/12/15/2288376.html 过滤器,是在java web中,你传入的request,resp ...
- iOS App Icon图标 尺寸规范
Commit to AppStore:1024*1024 //for App IconIcon-60@3x.png:180*180 //iPhone 6 Plus (@3x)Icon-60@2x.pn ...
- javaee 集锦
1.struts2 的配置随版本不同改变,可以使用struts2-blank包生成标准空白项目