C# ref out的使用与区别

news2024/11/24 4:12:16

Ref 和 out可以理解为类似的传址引用。
在函数需要外部传入一个变量名,然后在程序内部可以将这个值进行修改,典型的传址引用!在定义时必要加ref或out说明!

Ref和Out的区别:

ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。
out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。

Ref型参数引入前必须赋值。

Out型参数引入前不需赋值,赋值也没用。

定义一个refs类中含有ref和out方法:

public class Refs
    {
        /// <summary>
        /// out
        /// </summary>
        public void outArea(int r_width, int r_height, out int r_area)
        {
            r_area = r_width * r_height;
       
        }
 
        /// <summary>
        /// ref
        /// </summary>
        public void refArea(int r_width,int r_height, ref int o_area)
        {
            o_area = r_width * r_height;
        }
 
    }

实例化调用:

Refs rs = new Refs();
            rs.outArea(r_width, r_height, out r_area);
 
            Console.WriteLine(r_area);  // 输出200
 
            int o_area = 0;
            rs.refArea(r_width,r_height,ref o_area);
 
            Console.WriteLine(o_area);  // 输出200

测试使用全部代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace refOut
{
    public class Program
    {
        static void Main(string[] args)
        {
            // 求长方形面积
            int r_width = 10;
            int r_height = 20;
            int r_area = 0;
            Refs rs = new Refs();
            rs.outArea(r_width, r_height, out r_area);
            Console.WriteLine(r_area);  // 输出200
            int o_area = 0;
            rs.refArea(r_width,r_height,ref o_area);
            Console.WriteLine(o_area);  // 输出200
            Console.ReadKey();
        }
    }
    public class Refs
    {
        /// <summary>
        /// out
        /// </summary>
        public void outArea(int r_width, int r_height, out int r_area)
        {
            r_area = r_width * r_height;
       
        }
        /// <summary>
        /// ref
        /// </summary>
        public void refArea(int r_width,int r_height, ref int o_area)
        {
            o_area = r_width * r_height;
        }
    }
}

有好的建议,请在下方输入你的评论。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/716779.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

炼石白小勇:从业务视角重塑数据安全

2023年6月27日&#xff0c;由中国信息通信研究院、中国通信标准化协会主办&#xff0c;中国通信标准化协会大数据技术标准推进委员会承办&#xff0c;数据安全推进计划支持的2023年大数据产业发展大会-数据安全高质量发展论坛在北京成功召开。 本次论坛由中国信通院云计算与大数…

maven 环境配置踩坑

今晚在跟着视频学习spring的时候&#xff0c;创建maven工程&#xff0c;一直提示Sync 下载异常。搞了一晚上终于搞定了环境。下面给出一下今晚的总结。 1、确保maven安装并配置好环境变量。 下载并安装maven后&#xff0c;还需要在电脑上配置maven的环境变量。这部分参考网络教…

关于windows本机开放端口后,同一个网络下的其他电脑telnet不通的解决办法

前提&#xff1a;电脑A与电脑B均在同一个wifi下。 本地电脑A 启动了一个kong网关&#xff08;不管是什么应用&#xff0c;只要开启了一个监听端口就行&#xff09;&#xff0c;并且将docker里面的8000端口映射到本机的8000端口&#xff0c; 此时在电脑A上的命令行运行&#xf…

2023 IJCAI YES 青年精英学术大会正式开幕:群贤毕至,开启为期三天的智慧盛宴

内容一览&#xff1a; 2019 年&#xff0c;艾伦人工智能研究所发布《中国在人工智能研究领域超越美国》研究报告。这份报告反映了中国人工智能领域从「数」到「质」的飞跃&#xff0c;这不仅得益于国家政策的推动&#xff0c;更因为众多国内高校的不懈探索。 当前&#xff0c;人…

HTML和CSS配合制作一个简单的登录界面

HTML和CSS配合制作一个简单的登录界面 界面HTMLCSS解释语法 界面 HTML <!DOCTYPE html> <html lang"en"> <head><title>篮球世界</title><meta charset"UTF-8"><link type"text/css" rel"styleshe…

关注电动汽车(EV)能效水平 提高电动汽车续航能力

电动汽车&#xff08;EV&#xff09;近些年发展迅猛&#xff0c;已被汽车业内普遍认为是未来汽车发展的新方向&#xff0c;但现如今电动汽车仍然存在一些短板&#xff0c;导致其还无法替代传统燃油车。对此&#xff0c;首先想到的肯定就是电动车的续航问题。其实解决电动车续航…

揭秘Vue 2中的$nextTick:等待DOM更新的神奇时刻!

文章目录 1. 队列机制2. 异步执行3. 标记更新4. 下一次 DOM 更新循环5. 触发回调函数 在 Vue 2 中&#xff0c;$nextTick 是一个异步方法&#xff0c;用于在下次 DOM 更新循环结束后执行回调函数。 它的原理可以解析如下&#xff1a; 1. 队列机制 Vue 2 维护了一个队列&…

最火的 CI/CD 平台 Jenkins 详细搭建教程(for Linux)

在正式学习Jenkins之前我们需要对两个名词有一定了解&#xff0c;其一是DevOps&#xff0c;另外一个就是CI/CD。 何为DevOps&#xff1f; 来自wiki百科介绍 DevOps是一系列软件开发实践&#xff0c;强调开发人员&#xff08;Dev&#xff09;和测试人员&#xff08;QA&#xf…

【零基础入门学习Python---Python中数据分析与可视化之快速入门实践】

&#x1f680; 零基础入门学习Python&#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜…

css基础知识十六:如何实现单行/多行文本溢出的省略样式?

一、前言 在日常开发展示页面&#xff0c;如果一段文本的数量过长&#xff0c;受制于元素宽度的因素&#xff0c;有可能不能完全显示&#xff0c;为了提高用户的使用体验&#xff0c;这个时候就需要我们把溢出的文本显示成省略号 对于文本的溢出&#xff0c;我们可以分成两种…

学习之路不可或缺的软件宝藏,一起分享吧

在当今数字化时代&#xff0c;学习变得更加便利和多样化。为了助力你的学习之路&#xff0c;我将分享一些不可或缺的学习必备软件&#xff0c;让你事半功倍。 分享一&#xff1a;小睡眠 小睡眠是一款睡眠神器&#xff0c;专为那些每天晚上压力过大、思虑过多而难以入睡的人设…

【已解决】使用pyaudio内录声卡声音及相关问题

使用pyaudio内录声卡声音及相关问题解决 目录 使用pyaudio内录声卡声音及相关问题解决1 实现代码1.1 Recorder类&#xff1a;1.2 调用方法 2 问题一&#xff1a;选择设备实现内录/外录&#xff08;解决报错&#xff1a;OSError: [Errno -9999] Unanticipated host error&#x…

Vue Vite Manual

create project 初始化项目 $ npm create vitelatest导入vs code 方便操作 初始化的目录如下 安装依赖库 生成node_modules依赖库 和 package-lock.json. 其中package-lock.json用于锁定模块的版本号。 npm install启动项目 npm run dev项目配置 增加路由器 路由器 n…

骑行,究竟该不该佩戴护膝?应该怎么佩戴护膝才有效果?

骑行作为一项受欢迎的运动方式&#xff0c;在现代社会中越来越受到关注和热爱。随着骑行爱好者的增多&#xff0c;对于个人保护意识的重视也在逐渐提高。在这个话题中&#xff0c;一个备受关注的问题就是骑行时是否有必要戴护膝&#xff0c;以及如何正确佩戴护膝。 对于骑行爱好…

SAP生产版本和工艺路线由于批量不一致导致的报错问题解决实例

近期接到工艺用户问题&#xff0c;在维护生产版本时报错&#xff0c;状态异常&#xff0c;寻求支持。 在详细的提示信息中有一个生产版本不一致的提示&#xff0c;但不知这里的不一致具体指向什么&#xff0c;从逻辑上来推&#xff0c;这里只有一个可能&#xff0c;就是工艺路线…

windows 和华为手机使用charles抓包记录

1.下载charles 建议安装使用最新版&#xff0c;官方下载地址 https://www.charlesproxy.com/download help->Register->把上面的生成注册码放进去就行了&#xff08;在charles注册地址里面注册一下&#xff0c;charles注册地址&#xff09; 2.Proxy-> 勾选window…

网络安全(黑客)技术学习路线

谈起黑客&#xff0c;可能各位都会想到&#xff1a;盗号&#xff0c;其实不尽然&#xff1b;黑客是一群喜爱研究技术的群体&#xff0c;在黑客圈中&#xff0c;一般分为三大圈&#xff1a;娱乐圈 技术圈 职业圈。 娱乐圈&#xff1a;主要是初中生和高中生较多&#xff0c;玩网恋…

npm 安装私库包报错:请求地址错误 | 请求包错误

npm 安装私库包报错&#xff1a;请求地址错误 | 请求包错误 错误信息试错过程解决办法 在一次创建完 npm 私库之后&#xff0c;上传 npm 包没问题&#xff0c;但是下载一直出错。 老是请求一个旧的地址下载某个库&#xff0c;而那个地址已经停用了&#xff0c;因此请求很多次之…

在Layout里面创建封装如何快速切换单位

公制亦称“米制”、“米突制”。1858年《中法通商章程》签定后传入中国的一种国际度量衡制度。创始于法国。在PCB中单位为MM&#xff08;毫米&#xff09; 英制&#xff1a;英国、美国等英语国家使用的一种度量制。长度主单位为英尺&#xff0c;重量主单位为磅&#xff0c;容积…

Spring学习(三)(类注解和方法注解)

目录 1. 存储Bean对象 1.1 配置扫描路径 1.2 添加注解存储Bean对象 1.2.1 Controller(控制器存储) 1.2.2 Service&#xff08;服务存储&#xff09; 1.3 这么多注解&#xff1f;&#xff1f;&#xff1f;为什么&#xff1f;&#xff1f; 1.3.1 类注解时间的关系 1.4 方法…