输出参数
函数的输出只有返回值有时不太够,此时需要用到输出参数,用修饰词out声明
 输出参数的要求与引用参数类似,需要是变量,此外,输出参数也是实参的别名,指向堆中同一对象。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9DnDThzm-1685616286901)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/3460409a-1eb6-4b52-82c0-802052740dbe/Untitled.png)]](https://img-blog.csdnimg.cn/9e6d80817a9c48f4a26b86e40afe5f61.png)
输出参数与引用参数的不同在于,在方法内部给输出参数赋值后才能读取它,且返回前必须在所有路径都为输出参数赋值。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ze8gjh7y-1685616286903)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/d94fbd98-5381-40cc-8ce3-dde7d57a1d2d/Untitled.png)]](https://img-blog.csdnimg.cn/7dc9a451a97348bcbe0e89c3c734d0d7.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kq0I4gXS-1685616286903)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/fa94cfc1-4c83-4984-9240-f28d837699e0/Untitled.png)]](https://img-blog.csdnimg.cn/eecfc55e9e3a431789c319a6ac393272.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)]](https://img-blog.csdnimg.cn/d722093e9a0945fdb7d83bae4d460f4e.png)
参数数组的声明方法:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XMeLwTBx-1685616286904)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/02317dbf-242a-4bc9-91f7-29d10b8dace1/Untitled.png)]](https://img-blog.csdnimg.cn/6afe0e3a42ce466081297418364d356b.png)
方法调用
使用参数数组的方式有两种:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q1mU0Mqg-1685616286905)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/031f8820-0eb0-49e4-9805-a5a3668e4aac/Untitled.png)]](https://img-blog.csdnimg.cn/bf29afd397d24e12b717d26b8be637c8.png)
 这说明我们在调用参数数组时不需要使用修饰符params,这里与其他参数类型有些区别:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eEFcNgBL-1685616286906)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/9df352c4-dc67-4a56-b874-873401fa309f/Untitled.png)]](https://img-blog.csdnimg.cn/7ec7120d00a843a58f7caf232e05524a.png)
而参数数组在声明时需要使用修饰符,调用时不允许有修饰符
 在使用参数列表时,编译器的动作是:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6RYjF43k-1685616286908)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/5c23f815-7426-4c6f-ae0e-be3519940e10/Untitled.png)]](https://img-blog.csdnimg.cn/5869228604094eb4b3264d9aef86d5c9.png)
直接将数组作为实参时,编译器会使用你的数组而不是创建新的。
参数类型总结
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ueZNKFi9-1685616286909)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e4349cac-e40b-48d8-99ba-c374272da9a1/Untitled.png)]](https://img-blog.csdnimg.cn/5bf98054201a485f811ba311bad74edf.png)
方法重载
一个类中的同名方法称为方法重载,这些同名方法必须有不同的“签名”:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jX2OC1IN-1685616286910)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f026a102-d6a0-4745-8168-c179175af41a/Untitled.png)]](https://img-blog.csdnimg.cn/a3d3d0c806bc41d5bd72c99f2951e28f.png)
命名参数
位置参数根据形参与实参的位置匹配,不使用位置参数的话,还可以使用类似字典形式的命名参数:

当代码调用了多次时,使用命名参数有助于代码的阅读
可选参数
意思是当我们在设定形参时可以指定形参的默认值,然后在加载实参时可以不加载该形参对应的实参
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RmoEXMae-1685616286910)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/b80ec693-7ee0-4d97-a02b-41fd17934939/Untitled.png)]](https://img-blog.csdnimg.cn/97db980087744aa790f56f91f6daafd4.png)
但也并不是所有的参数都可以作为可选参数:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lSf0wjrn-1685616286911)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/24c9b10e-efc6-491f-95ce-8ce5b4e738f0/Untitled.png)]](https://img-blog.csdnimg.cn/8cb30bf703e54ce48983daa563c3cd49.png)
所有类型的形参的声明顺序遵循以下原则:

栈帧
在调用方法时,内存从栈顶开始分配,保存和方法关联的一些数据项,这块内存就是栈帧
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AmQPibLB-1685616286911)(https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e995e325-0997-47e8-82e7-9ac9c55bccc2/Untitled.png)]](https://img-blog.csdnimg.cn/2250be687a2344ebae5c6003b73e5ad0.png)
 
递归
递归是方法调用自己,为每一次方法调用把新的栈帧压入栈顶。
 
 










![[MAUI程序设计] 用Handler实现自定义跨平台控件](https://img-blog.csdnimg.cn/0436623e1b9d4b6f817f0045c69a6668.png)








