c#---out參數


一個方法有多個返回值時,返回值類型相同可以返回一個數組

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;
            }
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM