C#按输出参数传递
return语句可用于从函数返回仅有一个值。然而,使用输出参数,可以从一个函数返回两个值。输出参数是相似的参考参数,只是它们传送数据的方法,而不是到它里边。
下面的例子说明了这一点:
using System; namespace CalculatorApplication { class NumberManipulator { public void getValue(out int x ) { int temp = 5; x = temp; } static void Main(string[] args) { NumberManipulator n = new NumberManipulator(); /* local variable definition */ int a = 100; Console.WriteLine("Before method call, value of a : {0}", a); /* calling a function to get the value */ n.getValue(out a); Console.WriteLine("After method call, value of a : {0}", a); Console.ReadLine(); } } }
让我们编译和运行上面的程序,这将产生以下结果:
Before method call, value of a : 100 After method call, value of a : 5
输出参数中提供的变量不需要被分配一个值的方法调用。当需要从一个方法,通过该参数不分配一个初始值来将参数返回值的输出参数是特别有用的。看看下面的例子中,理解这一点:
using System; namespace CalculatorApplication { class NumberManipulator { public void getValues(out int x, out int y ) { Console.WriteLine("Enter the first value: "); x = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Enter the second value: "); y = Convert.ToInt32(Console.ReadLine()); } static void Main(string[] args) { NumberManipulator n = new NumberManipulator(); /* local variable definition */ int a , b; /* calling a function to get the values */ n.getValues(out a, out b); Console.WriteLine("After method call, value of a : {0}", a); Console.WriteLine("After method call, value of b : {0}", b); Console.ReadLine(); } } }
当上述代码被编译和执行时,它产生了以下结果(根据用户输入):
Enter the first value: 7 Enter the second value: 8 After method call, value of a : 7 After method call, value of b : 8