通俗易懂的ref和out区别
时间:2022-07-24
本文章向大家介绍通俗易懂的ref和out区别,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
ref 和 out 是C#开发中经常用到的两个关键字,但是很多人没有搞清楚这两个关键字的具体区别,下面我们来说一下这两个关键的区别。
零、 ref 与 out 的异同
- 相同:
- 都是按地址传递;
- 使用后都将改变原来参数的值;
- 编译时处理方式相同;
- 属性不能作为参数传递。
- 不同:
- ref 将参数值传进方法, out 无法将参数值传入方法;
- ref 传入参数前必须先初始化, out 不必在参数传输方法前初始化,但必须在方法中初始化;
- ref 用在需要被调用的方法修改调用者的引用的时候, out 用在需要返回多个结果的地方。
一、代码演示
ref 将参数值传进方法
static void Main(string[] args)
{
//初始化
int number = 50;
Console.WriteLine("调用方法前 number 值:" + number);
RefFunction(ref number);
Console.WriteLine("调用方法后 number 值:" + number);
Console.Read();
}
// 传入的参数值是 50 ,方法中使用的num值也是50
static void RefFunction(ref int num)
{
num = num / 2;
}
输出结果如下图所示:
out 无法将参数值传入方法
static void Main(string[] args)
{
int number = 50;
Console.WriteLine("调用方法前 number 值:" + number);
OutFunction(out number);
Console.WriteLine("调用方法后 number 值:" + number);
Console.Read();
}
// 无法将的参数值50传入 ,但是必须在方法中初始化
static void OutFunction(out int num)
{
//初始化
num = 120;
num = num / 2;
}
输出结果如下图所示:
小拓展:如果一个方法采用ref或out参数,而另一个方法不采用这两类参数,则可以进行重载。如下代码示例就是重载,可以通过编译: static void Function(out int num) { num = 120; num = num / 2; } static void Function(int num) { num = num / 2; }
- 通过深度学习实现安全帽佩戴的检测
- python及numpy,pandas易混淆的点
- 深度学习中的损失函数总结以及Center Loss函数笔记
- TF使用例子-LSTM实现序列标注
- 图像学习-验证码识别
- ResNet原理及其在TF-Slim中的实现
- 理工男的文科梦 —— LSTM深度学习写春联
- keras学习笔记-黑白照片自动着色的神经网络-Alpha版
- keras学习笔记-黑白照片自动着色的神经网络-Beta版
- Python 设计模式初探
- 请注意,我们要谈谈神经网络的注意机制和使用方法
- TensorFlow官方教程翻译:导入数据
- TF使用例子-情感分类
- TensorFlow官方教程翻译:TensorFlow调试器
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android开发实现各种图形绘制功能示例
- Android webview手动校验https证书(by 星空武哥)
- AndroidStudio Gradle第三依赖统一管理的实现方法
- 小程序上传多张图片到springboot后台,返回可供访问的图片链接
- AndroidStudio Gradle基于友盟的多渠道打包方法
- Android开发之全屏与非全屏的切换设置方法小结
- Android使用GridView实现日历的方法
- Android控件AppWidgetProvider使用方法详解
- R语言使用链梯法Chain Ladder和泊松定律模拟和预测未来赔款数据
- Android ViewPager实现左右滑动的实例
- R语言通过伽玛与对数正态分布假设下的广义线性模型对大额索赔进行评估预测
- R语言中回归模型预测的不同类型置信区间应用比较分析
- 第06期:Prometheus 存储
- 新特性解读 | 数组范围遍历功能
- 技术分享 | MySQL 内存管理初探