C#函数参数前的修饰符
函数的形参前可以带三种修饰符,分别的out、ref、param。
out:让函数可以输出“多个值”,并不是真正的输出多个值。
ref:相当于引用传递,在函数内部赋值会影响变量的值。
params:可变参数,当不知道数组的个数时可以方便的使用。
一、out
代码解析:
1.使用格式,定义时:out 类型 形参数名。使用时:out 实参名。
定义out参数变量时,可以不为变量赋值,因为赋值也是无用的,必须在方法内重新赋值。
2.可以看到,调用函数后,count的值变成了3。
3.C#7.0对out参数做了改进,目前还没有研究。
二、ref
1.使用格式,定义时:ref 类型 形参名。调用时:reg 实参名。
可以看到,使用ref的变量在使用前是必须赋值的,因为函数内部可以不对其做操作。
2.由结果可知,count的值被赋值为10086了。对普通的参数,形参值的改变是不会影响实参值的。
三、params
1.使用格式,定义:params 类型的数组形式(如:int[]) 形参名,必须是在所有形参的结尾定义。
2.调用时,可以不为params传递参数,此时,形参将是一个长度为0的数组,而不是NULL。
3.可以看到,对params可变参数的赋值形式,
a.可以不传递参数。
b.可以使用单个的参数拼凑成数组。
c.直接传递数组。
4.对可变参数的操作和对数组的操作一致,只是需要对其进行判断是否传递了参数。
5.params可变参数也是需要传递赋了值的变量。
四、补充
上述的三种方式都是为了函数返回多个参数值,如果对应的参数有关联性,
可以把它们封装成一个类,这样也能达到返回多个值的效果。
C#函数参数前的修饰符的更多相关文章
- [Reprint]C++函数前和函数后加const修饰符区别
c++中关于const的用法有很多,const既可以修饰变量,也可以函数,不同的环境下,是有不同的含义.今天来讲讲const加在函数前和函数后面的区别.比如: 01 #include<iostr ...
- C++函数前和函数后加const修饰符区别
class Test(){ public: Test(){} const int foo(int a); const int foo(int a) const; }; 一.概念 当const在函数名前 ...
- C++ 成员函数前和函数后加const修饰符区别
博客转载自: https://www.iteblog.com/archives/214.html 分析以下一段程序,阐述成员函数后缀const 和 成员函数前const 的作用 #include< ...
- 14_java之变量|参数|返回值|修饰符
01java中的文档注释和制作 * A: 在eclipse使用时,可以配合文档注释,导出对类的说明文档,从而供其 他人阅读学习与使用. 通过使用文档注释,将类或者方法进行注释用@简单标注基本信息.如@ ...
- 函数后面的const修饰符的作用
比如 void Fun() const; 的const是修饰什么的? 其实是修饰this指向的对象的. 这篇文章很详细的说明了const的作用,其中第三点说明了这种const的作用:const的用法, ...
- C#深入浅出 修饰符(二)
1.函数参数前的修饰符 params ,ref ,out params修饰的数据类型只能数组,用于参数不固定时:且此参数位于所有形式参数的最后: public static int GetMax(pa ...
- python函数修饰符@的使用
python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志.性能测试.事务处理等等. 创建函数修饰符的规则:(1)修饰符是一个函数(2)修饰符取被修饰函数为参数(3)修饰符返回一个新函数 ...
- Java基础之数据类型、内存、修饰符、代码块
Java 数据类型 基本数据类型 数值:int.short.long 字符:char 布尔:boolean 引用数据类型 class(类) interface(接口) 数组[] 所占字节数(1 byt ...
- Java访问权限修饰符public protected friendly private用法总结(转载好文Mark)
首先声明:Java中,friendly这个修饰符并没有显式的声明,在成员变量和方法前什么修饰符也不用,默认的就是friendly.为了条理清晰,分三种不同情况来总结. 一 访问权限修饰符修饰成员变量和 ...
随机推荐
- Spring MVC出现POST 400 Bad Request &405 Request method 'GET' not supported
首先描述一下出现错误的情景: 我刚学springmvc,想做一个登录界面的东西.然后试着写了一个controller如下: @RequestMapping(value = "/login&q ...
- 【codeforces 779A】Pupils Redistribution
[题目链接]:http://codeforces.com/contest/779/problem/A [题意] 让你把两个组的5个人的数目都变成一样的. 支持交换操作; 问你最少需要交换几次. [题解 ...
- 笔记-Windows10家庭中文版系统下使用Docker
1.docker是使用Linux内核的,在windows系统下需要使用虚拟机来运行docker. 2.Windows版的docker安装要求,(1)64为操作系统,win7或者更高,(2)支持&quo ...
- ubuntu 16.0.4 中docker 部署 sqlserver 2017(四)
1. 从 Docker Hub 中拉出 SQL Server 2017 Linux 容器映像 sudo docker pull mcr.microsoft.com/mssql/server:2017- ...
- Redis中的管道(PipeLine)与事物(Transactions)
Redis中的管道(PipeLine)与事物(Transactions) 序言 Redis中的管道(PipeLine)特性:简述一下就是,Redis如何从客户端一次发送多个命令,服务端到客户端如何一次 ...
- Struts2——(6)表单校验
一.表单校验 js,jquery是客户端校验,今天要说的是客户端校验. 禁止js,或者机器代码会破坏客户端校验,所以客户端校验相对不安全. 服务器端校验是基于java代码在服务器端进行校验,特点是相应 ...
- node 调用Python exec child_process 模块
参考:http://javascript.ruanyifeng.com/nodejs/child-process.html https://nodejs.org/api/child_process.h ...
- Java设计模式透析之 —— 单例(Singleton)
写软件的时候经常需要用到打印日志功能,可以帮助你调试和定位问题,项目上线后还可以帮助你分析数据.但是Java原生带有的System.out.println()方法却很少在真正的项目开发中使用,甚至像f ...
- Qt控件焦点切换
们日常切换控件,例如QQ登陆的账号和密码输入框就可以通过Tab键切换焦点. 图1 qq切换焦点 Qt中QWidget提供了一个静态方式实现该效果 其中也包含介绍使用 [static] void QW ...
- Bjarne Stroustrup语录2(一些C++使用注意点)
一.致读者 1. 在编程序时,你是在为你针对某个问题的解决方案中的思想建立起一种具体表示.让程序的结构尽可能地直接反映这些思想: ★.如果你能把“它”看成一个独立的概念,就把它做成一个类. ...