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...