一個方法有多個返回值時,返回值類型相同可以返回一個數組
static void Main(string[] args) { int[] nums = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int[] result = GetMaxMinSumAvg(nums); Console.WriteLine("Max-{0},Min-{1},Sum-{2},Avg-{3}", result[0], result[1], result[2], result[3]); Console.ReadKey(); } //返回數組中最大值,最小值,總和,平均值,此時4個返回值所以聲明一個數組 public static int[] GetMaxMinSumAvg(int[] nums) { //假設res[0]最大值,res[1]最小值,res[2]總和,res[3]平均值 int[] res = new int[4]; res[0] = nums[0];//max res[1] = nums[0];//min res[2] = 0;//sum for (int i = 0; i < nums.Length; i++) { if (nums[i] > res[0]) { res[0] = nums[i]; } if (nums[i] < res[1]) { res[1] = nums[i]; } res[2] += nums[i]; } res[3] = res[2] / nums.Length; return res; }
返回值類型不同時怎么辦?
out參數:返回值多個,不限類型
注意事項:
調用方法之前,對out參數傳遞的變量只需聲明,可以賦值也可以不賦值,賦值也會在方法中被覆蓋掉
使用out參數傳遞變量時,必須在方法內為其賦值,否則return的返回值沒有意義
方法的參數使用out修飾時,調用該方法時也要加上out關鍵字
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(); } 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"; }
MyTryParse示例
static void Main(string[] args) { int n; bool b = MyTryParse("123", out n); Console.WriteLine(b); Console.WriteLine(n); Console.ReadKey(); } public static bool MyTryParse(string s, out int result) { result = 0; try { result = Convert.ToInt32(s); return true; } catch { return false; } }