【C#图解教程】第六章 方法(下)

news/2024/11/23 0:09:15/

输出参数

函数的输出只有返回值有时不太够,此时需要用到输出参数,用修饰词out声明
输出参数的要求与引用参数类似,需要是变量,此外,输出参数也是实参的别名,指向堆中同一对象。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9DnDThzm-1685616286901)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/3460409a-1eb6-4b52-82c0-802052740dbe/Untitled.png)]

输出参数与引用参数的不同在于,在方法内部给输出参数赋值后才能读取它,且返回前必须在所有路径都为输出参数赋值。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ze8gjh7y-1685616286903)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d94fbd98-5381-40cc-8ce3-dde7d57a1d2d/Untitled.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kq0I4gXS-1685616286903)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/fa94cfc1-4c83-4984-9240-f28d837699e0/Untitled.png)]

C#7.0之后,可以不必预先声明变量作为输出参数了,如:

在这里插入图片描述

参数数组

参数数组允许同一类型的零个或多个实参对应一个形参,使用参数数组需要注意的点如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DvJC1dS8-1685616286904)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/6aad29a1-fd67-4cb1-8a68-e7d47fdcc040/Untitled.png)]

参数数组的声明方法:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XMeLwTBx-1685616286904)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/02317dbf-242a-4bc9-91f7-29d10b8dace1/Untitled.png)]

方法调用

使用参数数组的方式有两种:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q1mU0Mqg-1685616286905)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/031f8820-0eb0-49e4-9805-a5a3668e4aac/Untitled.png)]
这说明我们在调用参数数组时不需要使用修饰符params,这里与其他参数类型有些区别:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eEFcNgBL-1685616286906)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/9df352c4-dc67-4a56-b874-873401fa309f/Untitled.png)]

而参数数组在声明时需要使用修饰符,调用时不允许有修饰符
在使用参数列表时,编译器的动作是:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6RYjF43k-1685616286908)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/5c23f815-7426-4c6f-ae0e-be3519940e10/Untitled.png)]

直接将数组作为实参时,编译器会使用你的数组而不是创建新的。

参数类型总结

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ueZNKFi9-1685616286909)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e4349cac-e40b-48d8-99ba-c374272da9a1/Untitled.png)]

方法重载

一个类中的同名方法称为方法重载,这些同名方法必须有不同的“签名”:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jX2OC1IN-1685616286910)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f026a102-d6a0-4745-8168-c179175af41a/Untitled.png)]

命名参数

位置参数根据形参与实参的位置匹配,不使用位置参数的话,还可以使用类似字典形式的命名参数:

在这里插入图片描述

当代码调用了多次时,使用命名参数有助于代码的阅读

可选参数

意思是当我们在设定形参时可以指定形参的默认值,然后在加载实参时可以不加载该形参对应的实参

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RmoEXMae-1685616286910)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b80ec693-7ee0-4d97-a02b-41fd17934939/Untitled.png)]

但也并不是所有的参数都可以作为可选参数:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lSf0wjrn-1685616286911)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/24c9b10e-efc6-491f-95ce-8ce5b4e738f0/Untitled.png)]

所有类型的形参的声明顺序遵循以下原则:

在这里插入图片描述

栈帧

在调用方法时,内存从栈顶开始分配,保存和方法关联的一些数据项,这块内存就是栈帧

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AmQPibLB-1685616286911)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e995e325-0997-47e8-82e7-9ac9c55bccc2/Untitled.png)]
在这里插入图片描述

递归

递归是方法调用自己,为每一次方法调用把新的栈帧压入栈顶。
在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/147510.html

相关文章

拯救Linux小白:学习这20条命令,玩转Linux

目录 cdpwdlscpmvrmmkdircatlessheadtailgrepmanchownchmodtopfinddfdups !! Conclusion 在处理 Linux 时,您需要使用一个 shell——一个可以让您访问操作系统的接口。命令需要作为输入来通知或指导计算机程序执行特定操作。虽然大多数Linux 发行版都是用户友好的&a…

kaggle新赛:蛋白质功能预测大赛baseline

日前,Kaggle发布了CAFA 5 Protein Function Prediction蛋白质功能预测大赛。这是一个机器学习中的序列预测任务,需要你开发一个基于蛋白质氨基酸序列和其他数据的模型,预测一组蛋白质的功能。 该竞赛评估参与者对蛋白质序列的基因本体论&…

3D元宇宙数字展厅—虚拟智能化办公展厅引领未来办公新风尚

随着数字化技术和虚拟现实的迅猛发展,传统的办公方式正在经历一场革命性的变革。在这个数字化时代,虚拟智能化办公展厅正以其独特的优势和创新的展示方式,引领着未来办公的新风尚。 让我们一同探索虚拟智能化办公展厅的魅力,以及它…

CH9102与CP2102应用注意事项

文章目录 概述应用差异说明驱动说明GPIO使用说明硬件差异说明CH9102F VS CP2102N-GQFN24CH9102X VS CP2102CH9102X VS CP2102N-GQFN28 其他说明 CH9102资料链接 概述 CH9102(WCH)与CP2102的不同子型号之间可实现pintopin兼容,可以在不更改硬…

CH9102:国产USB转高速串口RS232芯片兼容替代CP2102

目录 CH9102简介CH9102芯片特性 差异说明1. 应用差异2. 硬件差异3. 其他说明 CH9102简介 CH9102是一个USB总线的转接芯片,实现USB转高速异步串口。提供了常用的MODEM联络信号,用于为计算机扩展异步串口,或者将普通的串口设备或者MCU直接升级…

codevs 2102

codevs 2102 典型的石子归并&#xff0c;但此题与原题不同的是&#xff1a;这是一个圆圈&#xff0c;所以我们断环为链&#xff0c;但从哪里断了&#xff0c;最后决定随便断&#xff0c;本题是从1断&#xff0c;再将链延长为2倍 #include <iostream> #include <cstd…

微信小程序+esp8266NodeMcu(cp2102)+onenet物联平台(二)

目录 一、搭建环境 1、esp8266NodeMcu(cp2102)驱动安装 2、为esp8266NodeMcu搭建Arduino开发环境 3、安装PubSubClient库 二、编写代码 上一篇文章微信小程序esp8266NodeMcu(cp2102)onenet物联平台&#xff08;一&#xff09;介绍了onenet平台注册及设备连接&#xff0c;接…

安装CP2102驱动

CP2102是一款USB转TTL电平的USB转串口芯片&#xff0c;网上的资源多为虚假软件&#xff0c;根本不能用&#xff0c;现给出官方网址 官网地址&#xff1a;https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers