方式 | 描述 |
---|---|
值传递 | 值传递会复制参数的实际值并赋值给函数的形式参数,实参和形参使用的是两个不同内存位置中的值,当形参的值发生改变时,不会影响实参的值,从而保证了实参数据的安全 |
引用传递 | 引用传递会复制参数的内存位置并传递给形式参数,当形参的值发生改变时,同时也会改变实参的值 |
输出传递 | 输出传递可以一次返回多个值 |
using System; namespace task.lmcjl.com { class Demo { static void Main(string[] args){ int val = 10; Demo Obj = new Demo(); Console.WriteLine("调用函数之前:{0}", val); Obj.Func(val); Console.WriteLine("调用函数之后:{0}", val); } public void Func(int val){ val *= val; Console.WriteLine("函数内部的值:{0}", val); } } }运行结果如下:
调用函数之前:10
函数内部的值:100
调用函数之后:10
using System; namespace task.lmcjl.com { class Demo { static void Main(string[] args){ int val = 10; Demo Obj = new Demo(); Console.WriteLine("调用函数之前:{0}", val); Obj.Func(ref val); Console.WriteLine("调用函数之后:{0}", val); } public void Func(ref int val){ val *= val; Console.WriteLine("函数内部的值:{0}", val); } } }运行结果如下:
调用函数之前:10
函数内部的值:100
调用函数之后:100
using System; namespace task.lmcjl.com { class Demo { static void Main(string[] args){ int val = 33; Demo Obj = new Demo(); Console.WriteLine("调用函数之前 val 的值:{0}", val); Obj.getValue(out val); Console.WriteLine("调用函数之后 val 的值:{0}", val); } public void getValue(out int x){ int temp = 11; x = temp; x *= x; } } }运行结果如下:
调用函数之前 val 的值:33
调用函数之后 val 的值:121
using System; namespace task.lmcjl.com { class Demo { static void Main(string[] args){ int a, b; Demo Obj = new Demo(); Obj.getValues(out a, out b); Console.WriteLine("调用函数之后 a 的值:{0}", a); Console.WriteLine("调用函数之后 b 的值:{0}", b); } public void getValues(out int x, out int y){ Console.WriteLine("请输入第一个值: "); x = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("请输入第二个值: "); y = Convert.ToInt32(Console.ReadLine()); } } }运行结果如下:
请输入第一个值:
123
请输入第二个值:
321
调用函数之后 a 的值:123
调用函数之后 b 的值:321
本文链接:http://task.lmcjl.com/news/12961.html