C#难点逐个击破(2):out返回参数
时间:2022-02-02 01:24:18
传值(by value)与传址(by reference)分别为普通传递参数方式与ref声明方式,传址方式在使用前需要ref关键词修饰;out为输出返回传递,与ref相同之处较多,其重要区别是在上一节讲到的ref在被引用方法中必须被初始化;out在被引用方法中一定要有返回值。
using System;
/******************************
* Chapter:C#难点逐个击破(一)
* Author:王洪剑
* Date:2010-1-15
* Blog:http://www.51obj.cn/
* Email:walkingp@126.com
* Description:重点讲解输出参数out
* ***************************/
namespace TestOut
{
class Program
{
/// <summary>
/// out的输出值、返回值
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
static string OutResultMethod(out string name)
{
string _name = "Wang Hongjian";
name = _name;
string __name = "Zheng Zi";
return __name;
}
static void Main(string[] args)
{
string _name = "Zhang Yu";
Console.WriteLine("调用前:{0}", _name);
string result= OutResultMethod(out _name);
Console.WriteLine("调用后:{0}",_name);
Console.WriteLine("返回结果:{0}",result);
Console.ReadKey();
}
}
}
运行结果:
out在实际项目中使用较多,这是因为out可以返回多个值
class Program
{
/// <summary>
/// out的输出值、返回值
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
static string OutResultMethod(out string name,out string password)
{
string _name = "Wang Hongjian";
name = _name;
string _password = "123456";
password = _password;
string __name = "Zheng Zi";
return __name;
}
static void Main(string[] args)
{
string _name = "Zhang Yu";
string _password;
Console.WriteLine("调用前:{0}", _name);
string result = OutResultMethod(out _name, out _password);//多个参数传递
Console.WriteLine("调用后:{0}",_name);
Console.WriteLine("返回结果:{0}",result);
Console.ReadKey();
}
}
联想多个参数,你一定想到了使用数组吧,不错,使用数组是个很好的方式,数组本身把同一类型的参数打包“封装"为一个对象传递给方法,这样可以简化多参数方法的编写,还能实现类似重载的效果。
static void OutArrayMethod(out string[] strArr)
{
int i = 0;
string[] _strArr = new string[10];
while (i < _strArr.Length)
{
_strArr[i] = "第" + i + "个成员";
i++;
}
strArr = _strArr;
}
static void Main(string[] args)
{
string[] _strArr=new string[10];
OutArrayMethod(out _strArr);
foreach (string str in _strArr)
{
Console.WriteLine(str);
}
Console.ReadKey();
}
运行效果:
源码下载
标签:C#,out,返回参数
0
投稿
猜你喜欢
C# 反射与dynamic最佳组合示例代码
2022-01-18 02:29:53
Javaweb获取表单数据的多种方式
2022-12-25 18:13:41
SpringBoot自动配置实现流程详细分析
2023-06-23 13:35:45
Java基础学习之方法的重载知识总结
2023-10-27 01:45:15
android连接wifi时获取广播地址代码
2022-11-20 13:08:32
C#实现获取鼠标句柄的方法
2022-05-06 21:13:41
springdata jpa使用Example快速实现动态查询功能
2022-12-01 21:49:08
Android编程之页面切换测试实例
2022-04-03 22:13:11
Java微信支付之公众号支付、扫码支付实例
2022-07-10 10:23:11
详解java基于MyBatis使用示例
2023-11-25 09:01:45
C#微信公众号开发之接收事件推送与消息排重的方法
2022-01-31 08:44:46
Opencv光流运动物体追踪详解
2023-06-21 11:55:31
Spring Cloud Alibaba Nacos 入门详解
2022-02-23 12:29:09
java获取redis日志信息与动态监控信息的方法
2021-11-19 06:24:55
springboot的war和jar包的使用详解
2021-08-24 04:09:13
详解java IO流之缓冲流的使用
2023-08-08 18:33:16
Java并发编程之同步容器与并发容器详解
2023-10-17 04:06:23
java实现的冒泡排序算法示例
2022-12-29 20:35:03
一文教你如何使用原生的Feign
2023-01-12 22:12:58
Android自定义ViewGroup实现标签浮动效果
2021-12-28 20:20:29