C#中Out和Ref參数修饰符
在编程过程中对于函数之间的參数的传递一般分为两种:传值和传地址。
以下为大家分析一下。
传值
比方你又一份文档,假设採用传值的话。相当于我复制了一份,因此我对我这份文档的改动都不会影响到你的那份。假设你对这句话了解的话,那么就简单了。
以下看一个小Demo。
<span style="font-family:SimSun;font-size:18px;"> static void Main(string[] args)
{
//定义一个变量
int val=1 ;
//调用方法
Method(val);
Console.WriteLine(val); //最后输出结果还是1 } static void Method( int i)
{
//这是我的那份文档的复制品
//不管我怎样改动,都影响不到你的
i = i+ 44;
Console.WriteLine(i); //我的文档的输出结果是45
}</span>
传址引用
还是你又一份文档,仅仅只是假设採取传值引用的话。我们两个人共享这份文档,那么可想而知,不管谁操作都会影响到最后的显示
Refkeyword
还是上面的那个Demo,假设换成Refkeyword。效果例如以下
<span style="font-family:SimSun;font-size:18px;"> static void Main(string[] args)
{
//定义一个变量
int val=1 ;
//调用方法
Method( ref val);
Console.WriteLine(val); //最后输出结果是45 } //依照传引用调用
static void Method(ref int i)
{
//俩人共享文档,所以我做的改动
//都会在最后呈现
i = i+ 44; }</span>
Outkeyword
近来再编程过程中又遇到了Outkeyword,与Ref的功能相当,都是传值引用,差别在于Ref在传递之前。须要对文档进行初始化。还是上面的样例,看一下效果
<span style="font-family:SimSun;font-size:18px;"> static void Main(string[] args)
{
//定义一个变量
int val ;//与Ref的差别在于。在此能够不进行初始化
//调用方法
Method( out val);
Console.WriteLine(val); //最后输出结果是44 } //依照传引用调用
static void Method(out int i)
{ //i = i+44;//这句话会报错
i = 44; }</span>
Ref与Out的差别
第一:还是两份文档。仅仅只是採取Ref方式的话,你不能给我一份空文档。而Out则能够同意你给我一份空文档。
第二:採取Ref方式,我能够直接对參数进行+、-等操作,而Out方式则必须先赋值。才干进行对应操作。
C#中Out和Ref參数修饰符的更多相关文章
- Direcshow中视频捕捉和參数设置报告
Direcshow中视频捕捉和參数设置报告 1. 关于视频捕捉(About Video Capture in Dshow) 1视频捕捉Graph的构建 一个能够捕捉音频或者视频的graph图 ...
- VS2010中使用命令行參数
在Linux下编程习惯了使用命令行參数,故使用VS2010时也尝试了一下. 新建项目,c++编敲代码例如以下: #include<iostream> #include<fstream ...
- struts2中action手动获取參数
struts2中action手动获取Session,jsp页面參数 1. ActionContext 在Struts2开发中,除了将请求參数自己主动设置到Action的字段中,我们往往也须要在Acti ...
- PHP中$_SERVER的具体參数与说明
PHP编程中常常须要用到一些server的一些资料.特把$_SERVER的具体參数整理下,方便以后使用. $_SERVER['PHP_SELF'] #当前正在执行脚本的文件名称,与 document ...
- C 中 main 函数的參数
看到不同的人写出的 C 或者 C++ 程序时,可能会出现不一样的 main 函数的定义,以下的几种定义方式都是对的: int main(void) int main(int argc) i ...
- 机器学习算法中怎样选取超參数:学习速率、正则项系数、minibatch size
本文是<Neural networks and deep learning>概览 中第三章的一部分,讲机器学习算法中,怎样选取初始的超參数的值.(本文会不断补充) 学习速率(learnin ...
- C 语言中的关键字 - 数据类型、数据修饰符及逻辑结构
C 语言中有 32 个关键字.这是留个编译器用的特殊字符串,用户不可以使用. 特殊关键字 sizeof 和 return 是 C 语言中的两个特殊关键字. sizeof sizeof 用于计算变量所占 ...
- 简单的描述Java中的构造函数,及访问修饰符
作为一个Java 初学者,对Java的理解可能有些片面,甚至有些错误的理解,对于观看此处的您,希望您选择性观看!!! 访问修饰符: 1.常用访问修饰符: public 共有的 private 私有的 ...
- Vue中监听 键盘事件及修饰符
键盘事件: keyCode 实际值 48到57 0 - 9 65到90 a - z ( A-Z ) 112到135 F1 - F24 8 ...
随机推荐
- 升压转换器 (Boost)
升压转换器 (Boost) 需要将输入电压转换为较高的输出电压时,升压转换器 (Boost)是唯一的选择. 升压转换器透过内部 MOSFET 对电压充电来达成升压输出的目的,而当 MOSFET 关闭时 ...
- Druid如何自动根据URL自动识别DriverClass的
Druid是根据url前缀来识别DriverClass的,这样使得配置更方便简洁. 前缀 DriverCLass 描述信息 jdbc:odps com.aliyun.odps.jdbc.OdpsDri ...
- 关于DIV多层嵌套的margin-top的BUG
今天在做登录页面的时候发现个margin-top的bug ; 初始代码如下: html: <div class="logo"></div> <div ...
- js复制兼容:ZeroClipboard复制到剪切板(支持IE、FF、Chrome)
注意:ZeroClipboard在本地测试无法直接使用,必须在服务器上测试,如http://localhost... 准备:ZeroClipboard.swf 和 ZeroClipboard.js 小 ...
- Java操作Microsoft Word之jacob
转自: 现在我们一起来看看,用Java如何操作Microsoft Word. jacob,官网是http://danadler.com/jacob 这是一个开源的工具.最新版本1.7 官方 ...
- JS中实现字符串和数组的相互转化
早上起来看了一道js的面试题,是这样描述的:利用var s1=prompt("请输入任意的字符串","")可以获取用户输入 的字符串,试编程将用户输入的字符串“ ...
- datagridview 单元格类型转换【备忘】
datagridview 在设定列类型后,其下面所有行的该列都与设定的列类型相同. 在需要改变某一行的某个单元格时,遇到了一些问题,再次进行备忘: 之前在遇到该问题时参考别人的博客解决过,但是时间久 ...
- UltraISO制作ISO镜像文件
怎样制作一个ISO的镜像文件呢,镜像文件的应用范围比较广泛,最常见的应用就是数据备份(如软盘和光盘).随着宽带网的普及,有些下载网站也有了ISO格式的文件下载,方便了软件光盘的制作与传递.常见的镜像文 ...
- 一道有序洗牌的笔试题,阿里\UC等都用过
题目:给定一个已经降序排好序的正数数组,要求按「最小.最大.次小.次大……」的顺序重新排序.期望的时间复杂度为O(n),空间复杂度为O(1),即不能申请额外的数组. 例如:输入[7,6,5,4,3,2 ...
- [置顶] All about control file in Oracle Database
--数据库实例启动的三个阶段: NOMOUNT(START):打开初始化参数文件 MOUNT:打开控制文件 OPEN:打开数据文件和日志文件 --控制文件 控制文件的作用:管理数据库的状态和描述数据库 ...