博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c#关于ref与out,params传参
阅读量:6387 次
发布时间:2019-06-23

本文共 1357 字,大约阅读时间需要 4 分钟。

1、params

首先,参数必须是一维数组;

在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字

使用后params可以直接使用一组对象作为参数如代码中调用方法2

//定义public void TestParams(params object[] list){    foreach (object o in list)   {      if (o is Bclass)            Console.WriteLine(o + " is Bclass!");      else            Console.WriteLine(o + " is not Bclass");    }}//调用string str1="test";object[] po = new object[] { 100, "guid", str1 };TestParams(po);//调用方法1TestParams(100,"str",str,b1);//调用方法2

2、ref,out

通常我们向方法中传递的是值.方法获得的只是这些值的一个副本,然后使用这些副本

当方法运行完毕后,这些拷贝将被丢弃,而原来的值不将受到影响.

而使用ref或out后,可以使参数按照引用来传递;方法体里对传递参数做了改变,调用完方法后,原先参数也做了改变

static void TestRefAndOut()        {            string s1 = "Hello World!";            TestRef(ref s1);            Console.WriteLine(s1);//output: Method TestRef: Hello World!            TestOut(out s1);            Console.WriteLine(s1);//output: Method TestOut: Hello World!        }        static void TestOut(out string str)        {            str = "Method TestOut: Hello World!";        }         static void TestRef(ref string str)        {            str = "Method TestRef: Hello World!";        }

相同之处:

1、方法定义和调用方法时,都必须显式使用ref或out关键字

区别:

1、使用ref,参数必须在调用方法前初始化值;out不用;

2、使用out,必须在方法内部对参数赋值;ref不用;

适合使用情景:

1、out适合用在需要retrun多个返回值的地方;(一个方法只能有一个return值,而使用out传参可以达到多个返回值)

2、ref则用在需要被调用的方法修改调用者的引用的时候

 

 

 

转载于:https://www.cnblogs.com/loklook123/p/3208539.html

你可能感兴趣的文章
createrepo 无法使用解决
查看>>
.net安全类库
查看>>
在Windows 2008 R2上部署SCCM 2007 R2
查看>>
tablespace backup模式一个没用的技术
查看>>
PostgreSQL安装
查看>>
七牛实时音视频云视频连线demo(web部分)
查看>>
Mysql 权限
查看>>
Spring事务管理(详解+实例)
查看>>
ubuntu apt-get install 出现无法定位软件包...
查看>>
centos7 下 基于docker搭建java/tomcat (方式一)
查看>>
全世界最好的编辑器VIM之Windows配置(gvim)[未测试]
查看>>
2018年你需要知道的13个JavaScript工具库
查看>>
当你点击按钮的时候如何设置其他按钮不可点击
查看>>
spring 高级装配
查看>>
【合集】parasoft Jtest 从安装到使用教程合集,收藏推荐!
查看>>
Python Pygame库的学习之路(1)
查看>>
信息安全与Linux系统
查看>>
Ubuntu安装mysql
查看>>
SpringCloud 微服务 (十四) 服务网关 Zuul 过滤器(Pre&Post)
查看>>
代理设计模式
查看>>