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 ...
随机推荐
- NHibernate使用无状态Sessions
NHibernate 3.0 Cookbook第三章,Using stateless sessions的翻译. 当要处理大量的数据,你通常可能会使用更"底层"的API来改善性能,在 ...
- [转]对Why Scrum will never work的评论
近来,Maurits的一篇博文“Why Scrum will never work” 一石激起千层浪.著名技术分享网站酷壳(http://coolshell.cn/articles/5044.html ...
- oracle sql 优化大全
转自: http://panshaobinsb.iteye.com/blog/1718233 http://yulimeander.blog.sohu.com/115850824.html 最近遇到了 ...
- 集成SVN源码管理和Mantis缺陷跟踪
集成SVN源码管理和Mantis缺陷跟踪 (windows) 要集成Mantis和SVN,需要几个工具:SVN客户端,TortoiseSVN,下载地址: http://tortoisesvn.net/ ...
- 【转载】Java并发编程:volatile关键字解析 by 海子
volatile这个关键字可能很多朋友都听说过,或许也都用过.在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果.在Java 5之后,volatile关键字才得以 ...
- 用 Nokitjs 解决前端开发中的跨域问题
问题 在开发一些「单页应用」时,通常会使用 Ajax 和服务器通讯,比如 RESTful API,通常「前端」和「服务端 API」可能是有不同人员在负责,也不在同一个工程下,那么开发过程中就可能会遇到 ...
- SPSS Clementine 数据挖掘入门2
下面使用Adventure Works数据库中的Target Mail作例子,通过建立分类树和神经网络模型,决策树用来预测哪些人会响应促销,神经网络用来预测年收入. Target Mail数据在SQL ...
- 挑战黑客极限:Pwn2Own 2015成史上“最难”黑客大赛
Pwn2Own是全球最著名.奖金最丰厚的黑客大赛,由美国五角大楼入侵防护系统供应商TippingPoint赞助.近日Pwn2Own 2015公布全新的比赛规则,本届赛事难度超高.史无前例,包括VUPE ...
- TensorFlowIO操作(二)----读取数据
读取数据 小数量数据读取 这仅用于可以完全加载到存储器中的小的数据集有两种方法: 存储在常数中. 存储在变量中,初始化后,永远不要改变它的值. 使用常数更简单一些,但是会使用更多的内存,因为常数会内联 ...
- 作用JavaScript访问和操作数据库
JS操作 Access 数据库 <SCRIPT LANGUAGE="JavaScript"> <!-- var filePath = location.href. ...