在编程过程中对于函数之间的參数的传递一般分为两种:传值和传地址。

以下为大家分析一下。

传值

比方你又一份文档,假设採用传值的话。相当于我复制了一份,因此我对我这份文档的改动都不会影响到你的那份。假设你对这句话了解的话,那么就简单了。

以下看一个小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參数修饰符的更多相关文章

  1. Direcshow中视频捕捉和參数设置报告

    Direcshow中视频捕捉和參数设置报告 1.      关于视频捕捉(About Video Capture in Dshow) 1视频捕捉Graph的构建 一个能够捕捉音频或者视频的graph图 ...

  2. VS2010中使用命令行參数

    在Linux下编程习惯了使用命令行參数,故使用VS2010时也尝试了一下. 新建项目,c++编敲代码例如以下: #include<iostream> #include<fstream ...

  3. struts2中action手动获取參数

    struts2中action手动获取Session,jsp页面參数 1. ActionContext 在Struts2开发中,除了将请求參数自己主动设置到Action的字段中,我们往往也须要在Acti ...

  4. PHP中$_SERVER的具体參数与说明

    PHP编程中常常须要用到一些server的一些资料.特把$_SERVER的具体參数整理下,方便以后使用. $_SERVER['PHP_SELF'] #当前正在执行脚本的文件名称,与 document ...

  5. C 中 main 函数的參数

          看到不同的人写出的 C 或者 C++ 程序时,可能会出现不一样的 main 函数的定义,以下的几种定义方式都是对的: int main(void) int main(int argc) i ...

  6. 机器学习算法中怎样选取超參数:学习速率、正则项系数、minibatch size

    本文是<Neural networks and deep learning>概览 中第三章的一部分,讲机器学习算法中,怎样选取初始的超參数的值.(本文会不断补充) 学习速率(learnin ...

  7. C 语言中的关键字 - 数据类型、数据修饰符及逻辑结构

    C 语言中有 32 个关键字.这是留个编译器用的特殊字符串,用户不可以使用. 特殊关键字 sizeof 和 return 是 C 语言中的两个特殊关键字. sizeof sizeof 用于计算变量所占 ...

  8. 简单的描述Java中的构造函数,及访问修饰符

    作为一个Java 初学者,对Java的理解可能有些片面,甚至有些错误的理解,对于观看此处的您,希望您选择性观看!!! 访问修饰符: 1.常用访问修饰符: public 共有的 private 私有的 ...

  9. Vue中监听 键盘事件及修饰符

    键盘事件: keyCode 实际值 48到57     0 - 9 65到90           a - z ( A-Z ) 112到135       F1 - F24 8            ...

随机推荐

  1. linux查看端口被哪个服务占用的命令

    netstat -tunpl | grep 6379

  2. 扩展LVM 逻辑卷存储空间

    原因: 运行在Xen DomU的磁盘空间不足,需要扩展.DomU的存储主要为[os镜像文件+lv逻辑卷]的形式,现要对逻辑卷进行扩展. 过程(离线方式): 卸载逻辑卷 umount /dev/VolG ...

  3. jQuery:validate表单验证基本使用

    jquery.validate是jquery的一个验证框架,可以迅速验证一些常见的输入,并且可以自己扩充自己的验证方法! 这里先从介绍简单的使用方法:jquery.validate.js下载地址 1. ...

  4. client怎样调用IBinder接口对象

    代码: public void funclick(View view){ Intent _intent = new Intent(MainActivity.this,MyService.class); ...

  5. OpenCV使用二维特征点(Features2D)和单映射(Homography)寻找已知物体

    使用二维特征点(Features2D)和单映射(Homography)寻找已知物体 目标 在本教程中我们将涉及以下内容: 使用函数 findHomography 寻找匹配上的关键点的变换. 使用函数  ...

  6. JDBC的批量插入操作

    在今天之前,当我遇到需要使用JDBC对数据库进行批量插入操作的时候,我使用的方法如下: ①使用Connection建立数据库连接: ②使用PreparedStatement提交SQL语句,将数据插入: ...

  7. Orchard运用 - 设置网站Favicon标识

    Favicon其实是访问其网站时在浏览器地址栏最前边呈现的类似logo的图标,可以作为品牌的标识,一般是其网站logo的缩小版并一般是ico格式的图片.详细解释可看这里: Favicon - 维基百科 ...

  8. 要点Java20 java.util.Collections

    java.util.Collections 集合帮助类 演示样例程序(JUnit演示) 排序 @Test public void testSort() { List<Integer> de ...

  9. Spark学习散点总结

    使用Spark 时,通常会有两种模式.一.在交互式编程环境(REPL, a.k.a spark-shell)下实现一些代码,测试一些功能点.二.像MapReduce 那样提前编写好源代码并编译打包(仅 ...

  10. [置顶] All about control file in Oracle Database

    --数据库实例启动的三个阶段: NOMOUNT(START):打开初始化参数文件 MOUNT:打开控制文件 OPEN:打开数据文件和日志文件 --控制文件 控制文件的作用:管理数据库的状态和描述数据库 ...