C# 输出参数out问题

作者:TheWindofFate 时间:2023-02-27 00:19:32 

C# 输出参数out

什么是输出参数

方法声明时,使用out修饰符声明的形参,成为输出参数。

输出参数的特点

1、输出参数不创建新的储存位置。

2、输出参数表示的储存位置就是实参表示的储存位置。

3、传递给输出参数的实参在方法调用前不需要强制初始化,在方法内部使用该形参时,需要强制赋值一次。

out参数的使用

使用out参数,可以使方法返回多个返回值。

static void Main(string[] args)
{
  int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
  int max;
  int min;
  int sum;
  double avg;
  int[] arr = GetMaxMinSumAvg(numbers, out max, out min, out sum, out avg);
  Console.WriteLine(max);
  Console.WriteLine(min);
  Console.WriteLine(sum);
  Console.WriteLine(avg);
  Console.WriteLine(arr.Length);
  Console.ReadKey();
}

public static int[] GetMaxMinSumAvg(int[] nums, out int max, out int min, out int sum, out double avg)
{
  int[] res = new int[4];
  max = nums.Max();
  min = nums.Min();
  sum = nums.Sum();
  avg = nums.Average();
  return res;
}

C#中out参数、ref参数与值参数用法

ref参数是引用,out参数为输出参数。

out参数修饰符

1、当希望方法返回多个值时,声明 out 方法非常有用。

2、不必初始化作为 out 参数传递的变量。然而,必须在方法返回之前为 out 参数赋值。

3、属性不是变量,不能作为 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参数修饰符

1、必须使用初始化过的变量

2、属性不是变量,不能作为 ref 参数传递。

3、Ref则用在要要被调出使用的方法修改调出使用者的引用的时候。

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

来源:https://blog.csdn.net/TheWindofFate/article/details/122621673

标签:C#,输出参数,out
0
投稿

猜你喜欢

  • 一文带你入门SpringMVC的配置与使用

    2021-06-24 12:30:52
  • SpringBoot使用GraphQL开发Web API实现方案示例讲解

    2023-05-17 16:50:22
  • GraalVm的反射配置辅助工具agentlib配置及使用

    2022-05-08 16:42:46
  • Spring学习之Bean的装配多种方法

    2023-09-04 09:32:36
  • pagehelper插件显示total为-1或1的问题

    2021-11-04 01:02:39
  • 完美解决客户端webview持有的页面缓存,不会立即释放的问题

    2021-09-23 03:30:50
  • Win10下C# DateTime出现星期几问题的解决方法

    2023-01-12 16:42:04
  • 详解C#正则表达式Regex常用匹配

    2022-07-08 08:04:45
  • Java 中的字符串常量池详解

    2023-08-15 04:43:45
  • C#多线程及同步示例简析

    2022-02-25 22:12:43
  • Java剑指offer之删除链表的节点

    2023-05-19 15:30:27
  • spring boot 动态生成接口实现类的场景分析

    2022-12-14 05:09:33
  • Java数组高级算法与Arrays类常见操作小结【排序、查找】

    2022-12-02 15:17:14
  • SpringCloud Function SpEL注入漏洞分析及环境搭建

    2022-07-03 05:18:21
  • SpringBoot整合EasyExcel实现文件导入导出

    2021-11-07 17:14:51
  • java实现转圈打印矩阵算法

    2022-11-27 06:38:21
  • C# SQlite操作方法小结

    2021-10-01 15:56:09
  • java编写贪吃蛇小游戏

    2023-06-19 01:49:54
  • 详解Java中Optional类的使用方法

    2023-11-25 05:22:28
  • VS2019配置opencv详细图文教程和测试代码的实现

    2023-07-17 13:49:31
  • asp之家 软件编程 m.aspxhome.com