当前位置: 首页 > news >正文

C#_各式各样的参数(引用参数、输出参数、数组参数、具名参数、可选参数)

引用参数

值参数和引用参数的区别在于传参时是否会创建参数副本:值参数不会创建副本,而引用参数会创建副本。

换言之,值类型参数的参数与实体之间无直接关联,修改参数不会对实体产生影响;引用类型参数的参数与实体可视为同一参数,修改参数会将修改同步至实体。

注:当函数并不修改参数引用,而只是修改被引用的对象时,值参数引用类型与引用参数引用类型在使用上并无区别,只是机制不同

使用方式:形参与实参用 ref 修饰

int num = 100;
public void Calculate(ref int x, int y)
{// 逻辑
}
Calculate(ref num, 50);

输出参数

输出参数与引用参数类似,其修饰符为 out (只是在函数中必需对输出参数执赋值操作,否则无法编译通过)

int num = 100;
public void Calculate(out int x, int y)
{// 逻辑x = 1;
}Calculate(num, 10)

数组参数

设置数组参数后,函数可接收动态数量的参数(数组参数必需位于参数列表的末尾;数组参数允许不传参)

使用方式:形参使用 params 修饰

public void Calculate(int x, int y, params int[] z)
{// 逻辑
}Calculate(1, 10, 1, 2, 3); // 1 2 3会被整合进z数组

具名参数

通过具名参数传参,无需提前声明变量(具名参数依据参数名与形参匹配,而不是次序)

使用方式:参数 : 值(传参时)

public void Calculate(int x, int y)
{// 逻辑
}Calculate(x: 1, y: 10);

可选参数

设置可选参数后,参数具有默认值,可选择不传参;若对参数传参,则覆盖默认值

public void Calculate(int x = 1, int y = 1)
{// 逻辑
}Calculate(10);

相关文章:

  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • 航空领域中气象常识笔记
  • 什么是跨模态
  • HTML和CSS是前端开发中最基础的两个技术[入门级]
  • 游戏平台如何定制开发?
  • Spring之AOP源码解析(上)
  • 鸿蒙原生应用元服务实战-发布时多设备选择注意事项
  • 9、内网安全-横向移动Exchange服务有账户CVE漏洞无账户口令爆破
  • MacBook的nginx出现13: Permission denied 的问题分析和解决办法
  • 蓝桥杯备赛系列——倒计时50天!
  • Neo4j导入数据之JAVA JDBC
  • 消息中间件之RocketMQ为什么写文件这么快?
  • R语言【raster】——projectRaster():映射一个Raster对象
  • Laravel02 路由基本概念和用法 给视图传递请求参数
  • Docker Image(镜像)
  • JavaScript-如何实现克隆(clone)函数
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • CSS 提示工具(Tooltip)
  • Docker 笔记(2):Dockerfile
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • js正则,这点儿就够用了
  • mac修复ab及siege安装
  • PAT A1120
  • Sublime Text 2/3 绑定Eclipse快捷键
  • tweak 支持第三方库
  • 当SetTimeout遇到了字符串
  • 多线程 start 和 run 方法到底有什么区别?
  • 多线程事务回滚
  • 给初学者:JavaScript 中数组操作注意点
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 免费小说阅读小程序
  • 实战|智能家居行业移动应用性能分析
  • 源码安装memcached和php memcache扩展
  • 在weex里面使用chart图表
  • 智能合约开发环境搭建及Hello World合约
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • #stm32驱动外设模块总结w5500模块
  • #大学#套接字
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (42)STM32——LCD显示屏实验笔记
  • (多级缓存)多级缓存
  • (实战篇)如何缓存数据
  • (算法)N皇后问题
  • (转)IOS中获取各种文件的目录路径的方法
  • .desktop 桌面快捷_Linux桌面环境那么多,这几款优秀的任你选
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • @Transactional类内部访问失效原因详解
  • [<事务专题>]
  • [20180224]expdp query 写法问题.txt
  • [C++]命名空间等——喵喵要吃C嘎嘎
  • [codevs 2822] 爱在心中 【tarjan 算法】
  • [Docker]四.Docker部署nodejs项目,部署Mysql,部署Redis,部署Mongodb