参数数组params

2024-03-01 21:32
文章标签 参数 数组 params

本文主要是介绍参数数组params,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用情况:当声明一个方法时,你不能确定要传递给函数的参数数目,在C#中可以使用参数数组params解决这个问题,参数数组通常用于传递未知数量的参数给函数,数组是引用类型,所以参数数组也是引用类型

使用条件:

(1)在一个参数列表中只能有一个参数数组
(2)参数数组如果存在则只能是列表中的最后一个
(3)由参数数组表示的所有参数都必须具有相同的类型
(4)声明时在数据类型前使用params修饰符,在数据类型后放置一组空的方括号,调用中不允许有该修饰符

特点:

(1)数组是一组整齐的相同类型的数据项
(2)数组使用一个数字索引进行访问
(3)数组是一个引用类型,因此他的所有数据项都保存在堆中

方法的调用:(声明:public void foo(params int[ ]a))

(1)延伸式参数:一个以逗号分隔的该数据类型元素的列表,所有元素必须是方法声明中指定的类型,这种形式在调用中使用分离的实参foo(1,2,3); foo(4,5,6,7);
在使用一个为参数数组分离实参的调用时,编译器做下面的事:
---接受实参列表,用它们在堆中创建并初始化一个数组
---把数组的引用保存到栈中的形参里
---如果在对应的形参数组的位置没有实参,编译器会创建一个有零个元素的数组来使用

在方法调用之前,3个实参已经在栈里,方法开始,3个实参被用于初始化堆中的数组,并且数组的引用被赋值给形参inVals,在方法内部,代码首先检查以确认数组引用不是null,然后处理数组,把每个元素X10并保存回去,方法执行之后,形参inVals失效如果数组参数是值类型,那么被复制,实参不受方法内部的影响,如果数组参数是引用类型,那么引用被复制,实参引用的对象可以受到方法内部的影响

(2)用数组作为实参一个该数据类型元素的一维数组  int[ ] a={1,2,3,4}; foo(a);

在此之前首先先明确一个点,就是C#中创建数组都是在堆上创建的,栈上只是它的一个引用,创建数组会有俩种形式,就是加new的和不加new的(这与C++不同,C++中不加new创建的就是在栈上创建的),也就是说 int[ ]a={1,2,3,4}; 和int[ ]a=new int[ ]{1,2,3,4};是同一种定义方式,只是不加new是一种缺省定义方法(个人见解),C#中引用类型都是在堆上创建的。

所以当将一个数组传递给参数数组时,编译器就会使用这个传递进去的数组,而不是重新再创建一个

这篇关于参数数组params的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/763890

相关文章

JavaScript对象转数组的三种方法实现

《JavaScript对象转数组的三种方法实现》本文介绍了在JavaScript中将对象转换为数组的三种实用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录方法1:使用Object.keys()和Array.map()方法2:使用Object.entr

C#中通过Response.Headers设置自定义参数的代码示例

《C#中通过Response.Headers设置自定义参数的代码示例》:本文主要介绍C#中通过Response.Headers设置自定义响应头的方法,涵盖基础添加、安全校验、生产实践及调试技巧,强... 目录一、基础设置方法1. 直接添加自定义头2. 批量设置模式二、高级配置技巧1. 安全校验机制2. 类型

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

HTTP 与 SpringBoot 参数提交与接收协议方式

《HTTP与SpringBoot参数提交与接收协议方式》HTTP参数提交方式包括URL查询、表单、JSON/XML、路径变量、头部、Cookie、GraphQL、WebSocket和SSE,依据... 目录HTTP 协议支持多种参数提交方式,主要取决于请求方法(Method)和内容类型(Content-Ty

python中的显式声明类型参数使用方式

《python中的显式声明类型参数使用方式》文章探讨了Python3.10+版本中类型注解的使用,指出FastAPI官方示例强调显式声明参数类型,通过|操作符替代Union/Optional,可提升代... 目录背景python函数显式声明的类型汇总基本类型集合类型Optional and Union(py

Go语言使用Gin处理路由参数和查询参数

《Go语言使用Gin处理路由参数和查询参数》在WebAPI开发中,处理路由参数(PathParameter)和查询参数(QueryParameter)是非常常见的需求,下面我们就来看看Go语言... 目录一、路由参数 vs 查询参数二、Gin 获取路由参数和查询参数三、示例代码四、运行与测试1. 测试编程路

Python lambda函数(匿名函数)、参数类型与递归全解析

《Pythonlambda函数(匿名函数)、参数类型与递归全解析》本文详解Python中lambda匿名函数、灵活参数类型和递归函数三大进阶特性,分别介绍其定义、应用场景及注意事项,助力编写简洁高效... 目录一、lambda 匿名函数:简洁的单行函数1. lambda 的定义与基本用法2. lambda

Java中数组与栈和堆之间的关系说明

《Java中数组与栈和堆之间的关系说明》文章讲解了Java数组的初始化方式、内存存储机制、引用传递特性及遍历、排序、拷贝技巧,强调引用数据类型方法调用时形参可能修改实参,但需注意引用指向单一对象的特性... 目录Java中数组与栈和堆的关系遍历数组接下来是一些编程小技巧总结Java中数组与栈和堆的关系关于

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用