博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ref in out params
阅读量:6258 次
发布时间:2019-06-22

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

参数类型可以分为ref、in、out这三种,默认的都是in。

通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量。它们的区别是:

1、把未赋值的变量用作ref参数是非法的,但可以把未赋值的变量用作out参数。在函数使用out参数时,必须把它看成是尚未赋值,调用代码可以把已赋值的变量用作out参数,但存储在该变量中的值会在函数执行时丢失。

以下是关于out使用的一个示例

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ch5t05{    class Program    {        static int MaxValue(int[] intArray, out int maxIndex)        {             int maxVal=intArray[0];            maxIndex = 0;            for (int i = 1; i < intArray.Length; i++)            {                if (intArray[i] > maxVal)                {                     maxVal=intArray[i];                    maxIndex = i;                }            }            return maxVal;        }        static void Main(string[] args)        {            int[] myArray = { 1, 8, 3, 6, 2, 5, 9, 3, 0, 2 };            int maxIndex;            Console.WriteLine("The maxium value in myArray is {0}",MaxValue(myArray,out maxIndex));            Console.WriteLine("The first occurance of this value is at element{0}",maxIndex+1);            Console.ReadKey();        }    }}

 

2、使用ref和out时,在方法的参数和执行方法时,都要加Ref或Out关键字。以满足匹配。

3、out适合用在需要retrun多个返回值的地方,而ref则用在需要被调用的方法修改调用者的引用的时候。不必初始化作为 out 参数传递的变量。但必须在方法返回之前为 out 参数赋值。

 

 

params:

一个函数中只能一个参数带params关键字;带params关键字的参数必须是最后一个参数;带params关键字的参数必须是一维数组。在调用的时候可以不给他传值,也可以给他传值,还可以给他传多个值。

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ch0501{    class Program    {        static string test(String name,params String[] words)        {            String msg=name;            foreach(String word in words)            {                msg+=word;            }            return msg;        }        static void Main(string[] args)        {            Console.WriteLine(test("liming"," how are you"));            Console.WriteLine(test("lili", " a girl", " a boy"));            Console.WriteLine(test("shasha"));            Console.ReadKey();        }    }}

 

转载于:https://www.cnblogs.com/lurongrong/p/4420896.html

你可能感兴趣的文章
Windows 8开发 WinRT 对ZIP文件解压缩及文件夹的ZIP压缩
查看>>
博客园
查看>>
Activity与Fragment数据传递之Fragment从Activity获取数据 分类: ...
查看>>
libFM 简介
查看>>
非均衡数据分布的分类问题
查看>>
用JAVA代码构造一个日历
查看>>
oracle密码过期ORA-28002:口令将过期的解决方法
查看>>
webdriver css选取器
查看>>
浏览器窗口最大化
查看>>
B+树
查看>>
[转] Yslow-网站性能评分工具的图文解析
查看>>
简单工厂设计模式计算器
查看>>
WinFrom“动态”WebService
查看>>
【钢铁侠3】【高清1280版HD-RMVB.英语中字】【2013最新美国票房科幻动作大片】...
查看>>
Eclipse 修改JVM
查看>>
状态者模式 c#
查看>>
最长回文子串
查看>>
Node-mongodb链接数据库函数的封装
查看>>
在CentOS上简单安装tengine
查看>>
c语言——字符串变量、函数
查看>>