C# 方法参数params ref out 的理解和区分
来源:互联网 发布:淘宝不能合并付款了 编辑:程序博客网 时间:2024/06/05 07:46
1.params MSDN解释: 关键字可以指定在参数数目可变处采用参数的参数方法
通俗理解:譬如,定义一个数组时,不知数组长度时,便可用params关键字修饰。
在方法声明中的params关键字之后不允许任何其他参数,并且在方法生命中只允许一个params关键字。
2.ref MSDN解释:ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。
其实在C#中,一般情况下,我们在给方法传参数时,实际上是使用的是参数的一个副本,就是将原来的变量赋值一份,然后传给方法来进行操作,所以在方法内部对参数的操作并不会对原本变量造成影响。但有时候,我们需要产生这种影响,就要使用到ref。此时传给方法的参数不是变量的副本而是变量本身。
3.out MSDN解释:out 关键字会导致参数通过引用来传递。这与 ref关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。
out与ref类似。不同之处在于out不需要对变量进行初始化。
ref与out的使用时在定义和调用方法时都必须使用。
using System;using System.Collections.Generic;using System.Text;namespace ConsoleApplication1{ class Program { //params private static void useParams(params object[] array) { for (int i = 0; i < array.Length; i++) { Console.WriteLine(array[i]); } } //ref private static void refChange1(int num) { num = 1; } private static void refChange2(ref int num) { num = 1; } //out private static void outChange(out string num) { num = "miner"; } static void Main(string[] args) { //params useParams(1, 2, 3); useParams("miner", "me"); //ref int num1 = 0; refChange1(num1); Console.WriteLine(num1);//未使用ref的结果 refChange2(ref num1); Console.WriteLine(num1);//使用ref的结果 //out string num2; outChange(out num2); Console.WriteLine(num2); Console.ReadLine(); } }}
- C# 方法参数params ref out 的理解和区分
- C#的方法参数-Params,Ref,Out
- C#的方法参数--params、ref、out
- C#方法的参数关键字:ref、out、params
- C#方法的参数关键字:ref、out、params
- C#方法的参数关键字:ref、out、params
- C#方法的参数关键字:ref、out、params
- C#方法的参数关键字:ref、out、params
- C#参数类型 params、out和ref
- ref,out,params参数的理解
- ref,out,params参数的理解
- C#的参数类型:params、out和ref
- c# 参数 params ,ref ,out
- 方法参数(params,ref,out)
- 方法参数:ref out params
- C# 参考之方法参数关键字:params、ref及out
- C# 参考之方法参数关键字:params、ref及out
- C# 参考之方法参数关键字:params、ref及out
- install xampp for mac
- freemaker
- 黑马程序员__7k面试题之银行业务调度系统
- 安卓 sinner 联动设置setOnItemSelectedListener初始默认值 实例
- CSDN的博客积分计算规则
- C# 方法参数params ref out 的理解和区分
- IETESTer
- JAVA_SWT常用事件, 和方法
- XAMPP: 在 MAC OS X 下安裝 Apache + PHP + MySQL 環境
- java多线程总结
- table折行
- js setTimeOut 方法
- VS2010 error: LINK : fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
- 消息推送ABC