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 ...
随机推荐
- iOS可持续化集成: Jenkins + bundler + cocoapods + shenzhen + fastlane + pgyer
工具介绍 1. bundler bundler用于管理ruby gem的工具,我们用来管理cocoapods以及fastlane的版本.直接sudo gem install bundler就可以.然后 ...
- Windows上安装Git替代cmd命令行程序
git是一个版本管理系统,利用好它,可以管理你项目文件,每个文件的更新删除修改,它都知道,还可以还原回历史的某个版本. msysgit是Windows版的Git. 1.下载地址:https://git ...
- 用 Redis 实现分布式锁(分析)
文章转自:http://www.jeffkit.info/2011/07/1000/ Redis有一系列的命令,特点是以NX结尾,NX是Not eXists的缩写,如SETNX命令就应该理解为:SET ...
- easyui icon的使用相关
easyui的默认图标有以下这些: .icon-blank{ background:url('icons/blank.gif') no-repeat; } .icon-add{ background: ...
- Python 日期和时间 —— datetime
Python 日期和时间 —— datetime Python提供了多个内置模块用于操作日期时间,如calendar,time,datetime.calendar用于处理日历相关 :time提供的接口 ...
- OpenCV学习(3) OpenCV框架
OpenCV是一个开源的视觉库,其中包括很多计算机视觉的算法实现.在版本2.2以后,OpenCV采用C++特征的API,在1.x版本中,OpenCV函数都是传统的C语言形式. ...
- Informatica 常用组件Source Qualifier之三 联接查询
联接源数据 可以使用一个源限定符转换来联接来自多个关系表的数据.这些表必须能从相同的实例或数据库服务器访问.当映射使用相关的关系源时,您可以在一个源限定符转换中同时联接两个源.在会话期间,源数据库在传 ...
- HDU1411++几何+四面体体积
公式题... 自己闲的用cos sin推出个公式 还不知道对不对,明天补上.. #include<stdio.h> #include<math.h> #include<i ...
- hadoop常见问题总结1
本文地址:http://www.cnblogs.com/archimedes/p/hadoop-problem1.html,转载请注明源地址. 问题1:http://localhost:50030 H ...
- win10 当前操作环境不支持支付宝控件 完美解决办法
第一步,修改系统配置 在运行中输入“gpedit.msc”打开本地组策略编辑器: 打运行窗口的方法是:按win键+R (按下win键再按R键之后 同时松开) win键 即windows 的微标键 如 ...