C#初级——方法/函数(ref 和 out关键字)(引用传参和输出传参)

news2024/9/9 1:31:43

ref关键字

ref是引用的方式传递参数,参数必须初始化。也就意味传入方法中的不再是形参,而是引用该实参。ref关键字在定义 和 使用时需要在前面添加 ref关键字表示引用,对比代码如下:

ref引用传参 

        //ref:引用的方式传递参数
        public static int findMax(ref int num1, ref int num2)
        //public static int findMax(int num1, int num2)
        {
            num1 *= 2;
            num2 *= 2;
            return num1 + num2;
        }
        private static void Main(string[] args)
        {
            //参数必须初始化不然会报错
            int num1 = 1;
            int num2 = 2;
            int num3 = 0;
            num3 = findMax(ref num1, ref num2);
            //num3 = findMax(num1, num2);
            
            Console.WriteLine($"num1 = {num1}, num2 = {num2}, num3 = {num3}");
                              //num1 = 2, num2 = 4, num3 = 6
            Console.ReadKey();
        }

值传参

        //ref:引用的方式传递参数
        //public static int findMax(ref int num1, ref int num2)
        public static int findMax(int num1, int num2)
        {
            num1 *= 2;
            num2 *= 2;
            return num1 + num2;
        }
        private static void Main(string[] args)
        {
            //参数必须初始化不然会报错
            int num1 = 1;
            int num2 = 2;
            int num3 = 0;
            //num3 = findMax(num1, num2);
            num3 = findMax(num1, num2);
            
            Console.WriteLine($"num1 = {num1}, num2 = {num2}, num3 = {num3}");
                              //num1 = 1, num2 = 2, num3 = 6
            Console.ReadKey();
        }

out关键字

out关键字与ref关键字一样也是引用传递,在使用out修饰的参数,在定义的时候,可以初始化,也可以不初始化,但是,在方法内部必须赋值。

out输出传参 

        public static int result(int num1, int num2, out int num3)
        //public static int result(int num1, int num2, int num3)
        {
            num3 = (num1 + num2) / 2;
            return num3;
        }
        private static void Main(string[] args)
        {
            int num1 = 2;
            int num2 = 4;
            int num3 = 0;
            int avg = 0;
            avg = result(num1, num2, out num3);
            //avg = result(num1, num2, num3);
            Console.WriteLine($"avg = {avg}, num3 = {num3}");   //avg = 3, num3 = 3
            Console.ReadKey();
        }

 值传递

        //public static int result(int num1, int num2, out int num3)
        public static int result(int num1, int num2, int num3)
        {
            num3 = (num1 + num2) / 2;
            return num3;
        }
        private static void Main(string[] args)
        {
            int num1 = 2;
            int num2 = 4;
            int num3 = 0;
            int avg = 0;
            //avg = result(num1, num2, out num3);
            avg = result(num1, num2, num3);
            Console.WriteLine($"avg = {avg}, num3 = {num3}");   //avg = 3, num3 = 0
            Console.ReadKey();
        }

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

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

相关文章

vscode搭建rust开发环境

由于rustrover不是免费的,此处教学搭建一套基于vscode的rust开发环境,可运行,可调式 1.下载vscode1.91.1 Download Visual Studio Code - Mac, Linux, Windows 2.下载插件 打开网站下载插件 rust-analyzer-0.4.2049、vscode-lldb-1.10.0、…

SQL数据库如何修改表中栏位的长度

1.问题 已经建立的表中MEMO 栏位原来长度是20,随着使用需要将MEMO长度调整为200; 即 MEMO VARCHAR(20) → MEMO VARCHAR(200) 2.修改办法 -- ALTER TABLE 表名 ALTER COLUMN 栏位名字 类型(长度);ALTER T…

java通过poi解析word入门

文章目录 介绍一、了解word docx文档的结构二、引入POI的依赖三、解析Word文档常用API加载Word文档获取文档整体结构获取文档中的段落获取文档中的表格获取文档中的脚注 四、解析Word中的段落示例五、读取Word文档并遍历图片六、解析Word中的图片示例 介绍 Apache POI 是一个处…

6. 运行时数据区-程序计数器和栈帧

运行时数据区分类 Java虚拟机在运行Java程序过程中管理的内存区域,称之为运行时数据区。运行时数据区分为两大类,线程共享和线程不共享,线程共享的有: 方法区堆 线程不共享的有: 程序计数器Java虚拟机栈本地方法栈…

收银系统源码-会员营销

系统概况 专门为零售行业的连锁店量身打造的收银系统,适用于常规超市、生鲜超市、水果店、便利店、零食专卖店、服装店、母婴用品、农贸市场等类型的门店使用。同时线上线下数据打通,线下收银的数据与小程序私域商城中的数据完全同步,如商品…

Luma AI发布文生视频大模型Dream Machine——可免费在线试玩

Sora模型的文生视频能力,想必一定惊艳过你。虽然Sora模型很惊艳,但是并没有开放给普通大众。Luma AI发布文生视频大模型Dream Machine模型,可以免费供大家使用,任何人只要到Luma AI的官方网站,就可体验Luma AI的文生视…

vue3前端开发-小兔鲜项目-sku的实现

vue3前端开发-小兔鲜项目-sku的实现!这是一个会计学的特殊专业名词,可以理解为产品的型号,规格的货品计量单位。 它是一组数据的混合体。比如:尺寸,材料,品质,等等。组合在一起形成的一个混合数…

Java——多态(Polymorphism)

一、多态 1、什么是多态 多态(Polymorphism)是面向对象编程的三大核心特性之一(另外两个是封装和继承)。多态性允许一个接口或基类的不同实现或子类以统一的方式处理。 二、方法多态 方法的多态性主要通过方法重载&#xff08…

Git原理与用法系统总结

目录 Reference前言版本控制系统Git的诞生配置Git配置用户名和邮件配置颜色配置.gitignore文件 Git的基础用法初始化仓库克隆现有的仓库添加暂存文件提交变动到仓库比较变动查看日志Git回退Git重置暂存区 Git版本管理重新提交取消暂存撤销对文件的修改 Git分支Git分支的优势Git…

2024年中小企业为何更需要找百度竞价托管代运营公司

企业间的竞争日益激烈,网络营销已成为企业获取市场份额、提升品牌知名度的关键途径。而在众多网络营销手段中,百度竞价推广因其高效、精准的特点,成为众多企业的首选。然而,随着市场竞争的加剧和百度竞价规则的不断调整&#xff0…

值得细读的8个视觉大模型生成式预训练方法

大语言模型的进展催生出了ChatGPT这样的应用,让大家对“第四次工业革命”和“AGI”的来临有了一些期待,也作为部分原因共同造就了美股2023年的繁荣。LLM和视觉的结合也越来越多:比如把LLM作为一种通用的接口,把视觉特征序列作为文…

年化27.9%,最大回撤-13.6%的可转债因子策略,结合机器学习特征筛选(附python代码)

原创文章第603篇,专注“AI量化投资、世界运行的规律、个人成长与财富自由"。 我们重新更新了可转债的全量数据,包含全量已经退市的转债。 ——这是与股票市场不一样的地方,股票退市相对少,而转债本身就有退出周期。 因此&…

喝奶 (全脂 抵脂肪 脱脂 )

鲜牛奶就是全脂的. 婴儿配方奶粉, 脂肪含量就高 全脂牛奶通常口感更浓郁,适合许多人的口味偏好, 全脂牛奶含有较高的脂肪含量,这有助于提供能量和饱腹感,从而减少总体热量的摄入, 有研究指出,喝全脂牛奶的儿童超重或肥胖的风险可能比喝低脂…

80端口被system占用 ,system进程是4!!!亲测-----解决

最近需要使用nginx,发现80端口北占用 正常情况下,查看那个进程占用,然后找到对应的程序,关闭对应的就可了。 使用 netstat 命令: 打开命令提示符(以管理员身份)。输入命令 netstat -ano | fi…

昇思25天学习打卡营第18天|ResNet50 迁移学习实战:从数据准备到模型构建

目录 环境配置 加载数据集 数据集可视化 构建Resnet50网络 固定特征进行训练 训练和评估 可视化模型预测 环境配置 MindSpore 库的版本管理和数据集的下载操作。首先,它卸载了已安装的 MindSpore 版本,并重新安装指定版本(2.3.0rc1&…

帆软BI 模仿一个可视化护理软件大屏 (三百六十行 行行fine BI)

帆软BI 模仿一个可视化护理软件大屏 (三百六十行 行行fine BI) 文章目录 帆软BI 模仿一个可视化护理软件大屏 (三百六十行 行行fine BI)前言一、怎么做?二、导入数据三、编辑数据制作联合饼图四、编辑数据风险管理五、…

微短剧出海CPS分销推广影视平台系统搭建思维逻辑介绍

随着国内短剧市场的蓬勃发展,其独特的魅力与影响力已跨越国界,成为海外观众的新宠。这一趋势不仅推动了短剧内容的全球化传播,也为海外市场的CPS(按销售分润)分销模式提供了广阔舞台。连接内容创作者、平台运营者、系统…

数据结构与算法-关于堆的基本排序介绍

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 文章目录 引言一、堆排序…

职场中的六条建议

在职场的征途中,我们每个人都是独一无二的行者,面对挑战与机遇并存的每一天。我们在职场中工作要弄清楚工作的本质,一定要牢记几点: 工作的本质与态度 我们工作的目的就是为了挣钱,我们不是来义务劳动也不是来参加快乐…

【Redis 初阶】Redis 常见数据类型(预备知识、String、哈希、List)

Redis 提供了 5 种数据结构,理解每种数据结构的特点对于 Redis 开发运维非常重要,同时掌握每种数据结构的常见命令,会在使用 Redis 的时候做到游刃有余。 一、预备知识 官方文档:Commands | Docs (redis.io) 1、最核心的两个命令…