ref,out,params参数的理解

 
using System;
namespace WinFormTest { /// <summary> /// Class1 的摘要说明。  /// 本代码演示了 ref,out params 关键字在函数参数传递中的作用  /// </summary>  class Class1  {   /// <summary>   /// 应用程序的主入口点。   /// </summary>   [STAThread]   static void Main(string[] args)   {    int i=0,j=0,k;    string msg;    //    // TODO: 在此处添加代码以启动应用程序    //    OutFunc(out i,out j);    Console.WriteLine(i);    Console.WriteLine(j);    RefFunc(ref i,ref j);    Console.WriteLine(i);    Console.WriteLine(j);    // 注意带 params 标识符的函数于不带标识符函数声明和调用上的区别 , 不带标识符的函数调用前要用 new 初始化参数数组的大小 ///    i=1;j=2;k=3;    ParamsFunc(i,j,k);    Console.WriteLine("i 现在的值为 {0}, 于原先的值 {1}",i,msg=(i==1)?" 相同 ":" 不同 ");// 结果证明是按值传递,函数体内部不会影响参数的值    NoParamsFunc(new int[]{10,20,30});    //   }   /// <summary>   ///out 关键字测试函数   /// </summary>   /// <param name="x"></param>   /// <param name="y"></param>   public static void OutFunc(out int x,out int y)   {    x=200;    y=100;   }   /// <summary>   /// ref 关键字测试函数   /// </summary>   /// <param name="x"></param>   /// <param name="y"></param>   public static void RefFunc(ref int x,ref int y)   {    x=10;    y=20;   }   /// <summary>   /// 注意带 params 标识符的函数于不带标识符函数声明和调用上的区别   /// </summary>   /// <param name="args"></param>   public static void ParamsFunc(params int[] args)   {    Console.WriteLine(" 参数个数 {0}",args.Length);    // 尝试修改参数的值,确定这些参数是按值传递还是饮用传递    args[0]=55;    for(int i=0;i<args.Length;i++)     Console.WriteLine(" 参数 {0} 是: {1}",i,args[i]);   }   public static void NoParamsFunc(int[] args)   {    Console.WriteLine(" 参数个数 {0}",args.Length);    for(int i=0;i<args.Length;i++)     Console.WriteLine(" 参数 {0} 是: {1}",i,args[i]);   }  } }
--------------------- 运行结果 ------------------------
200 100 10 20 参数个数 3 参数 0 是: 55 参数 1 是: 2 参数 2 是: 3 i 现在的值为 1, 于原先的值相同 参数个数 3 参数 0 是: 10 参数 1 是: 20 参数 2 是: 30 Press any key to continue...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值