C#中的out参数/ref参数/params可变参数

out参数:

out关键字 通过引用来传递参数,在定义方法和调用方法的时候都必须使用out关键字

简单来讲out可以用来返回多个参数类型。

       static void Main(string[] args)
        {
            string s = "123";
            int result;
            bool b = MyTest(s,out result);
        }
        public static bool MyTest(string s, out int result)
        {
            bool isTrue;
            try {
                result = Convert.ToInt32(s);//使用out参数必须在定义方法内进行赋值
                isTrue = true;
            }
            catch
            {
                isTrue = false;
                result = 0;
            }
            return isTrue;
        }

该方法返回类型为bool类型,在返回bool类型的同时也顺带返回了int类型的result变量。即,返回两种变量类型。


ref参数

ref参数在定义的方法内对其进行处理,再将结果返回,定义方法无需多余的返回类型。

ref参数和out 的的区别 out必须在定义方法内部赋值,ref必须在调用方法之前为其实参赋值。

        static void Main(string[] args)
        {
            //使用ref参数来交换两个数字的值
            int a = 1;
            int b = 2;
            Change(ref a, ref b);
            Console.WriteLine("a{0},b{1}",a,b);
            Console.ReadKey();
        }
        public static void Change(ref int a, ref int b)
        {
            int temp;
            temp = a;
            a = b;
            b = temp;
        }

注意 在定义方法的时候 可以不需要返回值啦~


params可变参数

将实参列表中与可变参数数组类型一致的元素都当做数组的元素去处理。

params可变参数必须是形参的最后一个元素。

 

        static void Main(string[] args)
        {
            //方法一:可以使用数组传参
            //int[] scores = {22,11,33};
            //test("张三",11,scores)
            //方法二:也可以直接在调用的时候使用和数组类型一致的元素
            test ("张三", 100, 22, 11, 33);
            Console.ReadKey();
        }
        /// <summary>
        /// params测试函数,计算一个同学的总成绩
        /// 在params使用的时候必须将其放在最后一个参数,如下所示!
        /// </summary>
        /// <param name="name">姓名</param>
        /// <param name="number">学号</param>
        /// <param name="s">可变数组成绩</param>
        public static void test(string name, int number, params int[] s)
        {
            int sum = 0;
            for (int i = 0; i < s.Length; i++)
            {
                sum = sum + s[i];
            }
            Console.WriteLine("{0}的学号是{1},总分为{2}", name, number, sum);
        }

 

posted @ 2017-12-29 16:35  CosmosbipinnatusCav  阅读(1557)  评论(1编辑  收藏  举报