C# 输出参数out问题
作者:TheWindofFate 发布时间:2023-02-27 00:19:32
标签:C#,输出参数,out
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#执行外部命令的方法。分享给大家供大家参考。具体实现方法如下:///<summary>///executes a
- 最近要实现一个功能,就是checkbox跨页多选,在网上看了一下,资料很少,而且大多是不完全的。不过经过我的努力,终于做出来了。
- Glide 加载图片使用到的两个记录Glide 加载图片保存至本地指定路径/** * Glide 加载图片保存到
- 原文是 java ,现在将它翻译成 C# ,并对代码重新编排整理,博主是一个今年刚出来的应届毕业生,不足之处请多多包涵。根据银行卡号判断所属
- 如果使用了反向代理软件,将http://192.168.1.110:2046/ 的URL反向代理为http://www.xxx.com/ 的
- ImageCacheconst int _kDefaultSize = 1000;const int _kDefaultSizeBytes
- 基本结构我们先来看一段最基本的代码,分析这段代码在RxJava中是如何实现的。Observable.OnSubscribe<Strin
- Mybatis映射文件mapper.xml的注释问题从昨天夜晚9点到今天中午,一直被项目bug所困惑,中间这段时间一直未解决这个问题,也咨询
- 项目中遇到springBoot+docker需要配置不同环境变量的问题,做个简单的总结:1.开发环境ide中启动项目可以通过ide的环境变量
- Android 帧动画的实例详解对于 Android 帧动画 大体上可以理解成 一张张图片 按一定顺序切换, 这样当连续几张图是一组动画时,
- IP地址与整数之间的转换1、IP地址转换为整数原理:IP地址每段可以看成是8位无符号整数即0-255,把每段拆分成一个二进制形式组合起来,然
- 使用注解来配置Action可以实现零配置,零配置将从基于纯XML的配置转化为基于注解的配置。使用注解,可以在大多数情况下避免使用
- 向shell提供命令非常简单,需要学习的注解很少。该命令的实现风格与使用依赖注入的应用程序的开发类相同,您可以利用Spring容器的所有特性
- 这篇文章主要介绍了如何实现java Iterator迭代器功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,
- 1、return语句的作用:a、返回一个值,这个值可以是任意类型。b、使程序返回到操作系统(即终止程序)2、java中对于一个函数,不论有没
- 实现常驻通知栏时遇到的问题:无论如何就是不显示通知,查看日志发现貌似报错了:2020-06-28 14:11:34.923 6387-638
- 这篇文章主要介绍了Spring ApplicationListener * 用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具
- 一、interrupt的使用特点我们先看2个线程打断的示例首先是可打断的情况:@Testpublic void interruptedTes
- 二进制数据一般输入的格式是0x45, 0x3a, 0xc3, 这种数据格式看起来是16进制的字符串,但是实际上在存储的时候每个都对应一个字节
- 本文实例为大家分享了Android Studio实现带边框的圆形头像的具体代码,供大家参考,具体内容如下效果显示:(没有边框的)(有边框的)