C#中的OUT
out 设计初衷:不必事先初始化变量,就可以通过引用传递参数给变量。 out 标注函数参数就是为了能返回多个结果,out参数表就是输出参数表。 在调用函数中,不能用out参数做任何运算,一般只能放输出结果。
每个方法只能有一个返回值。但是你想有多个返回值,OUT就起作用了
out参数:返回值多个,不限类型
1.调用方法之前,对out参数传递的变量只需声明,可以赋值也可以不赋值,赋值也会在方法中被覆盖掉 2.使用out参数传递变量时,必须在方法内为其赋值,否则return的返回值没有意义 3.方法的参数使用out修饰时,调用该方法时也要加上out关键字 4.使用out修饰的变量不需要return
实例1
public static bool MyTryParse(string s, out int result) { result = 0; try { result = Convert.ToInt32(s); return true; } catch { return false; } }
static void Main(string[] args) { int n; bool b = MyTryParse("123", out n); Console.WriteLine(b); Console.WriteLine(n); Console.ReadKey(); }
实例2
public static void Test(int[] nums, out int max, out int min, out int sum, out int avg, out string s)//5个out参数修饰的是多余的返回值 { //out参数必须在方法内部为其赋值,否则返回去没有意义 max = nums[0]; min = nums[0]; sum = 0; for (int i = 0; i < nums.Length; i++) { if (nums[i] > max) { max = nums[i]; } if (nums[i] < min) { min = nums[i]; } sum += nums[i]; } avg = sum / nums.Length; //此方法void无返回值,无需写return s = "Test_Result"; }
static void Main(string[] args) { int[] nums = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int max; int min; int sum; int avg; string s; Test(nums, out max, out min, out sum, out avg, out s); Console.WriteLine(max); Console.WriteLine(min); Console.WriteLine(sum); Console.WriteLine(avg); Console.WriteLine(s); Console.ReadKey(); }
补充:ref