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 @   CosmosbipinnatusCav  阅读(1571)  评论(1编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
点击右上角即可分享
微信分享提示